Control.BeginInvoke Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Denetimin temel tanıtıcısının oluşturulduğu iş parçacığında zaman uyumsuz olarak bir temsilci yürütür.
Aşırı Yüklemeler
BeginInvoke(Delegate, Object[]) |
Denetimin temel tanıtıcısının oluşturulduğu iş parçacığında belirtilen temsilciyi belirtilen bağımsız değişkenlerle zaman uyumsuz olarak yürütür. |
BeginInvoke(Action) |
Denetimin temel tanıtıcısının oluşturulduğu iş parçacığında belirtilen temsilciyi zaman uyumsuz olarak yürütür. |
BeginInvoke(Delegate) |
Denetimin temel tanıtıcısının oluşturulduğu iş parçacığında belirtilen temsilciyi zaman uyumsuz olarak yürütür. |
BeginInvoke(Delegate, Object[])
Denetimin temel tanıtıcısının oluşturulduğu iş parçacığında belirtilen temsilciyi belirtilen bağımsız değişkenlerle zaman uyumsuz olarak yürütür.
public:
virtual IAsyncResult ^ BeginInvoke(Delegate ^ method, cli::array <System::Object ^> ^ args);
public:
virtual IAsyncResult ^ BeginInvoke(Delegate ^ method, ... cli::array <System::Object ^> ^ args);
public IAsyncResult BeginInvoke (Delegate method, object[] args);
public IAsyncResult BeginInvoke (Delegate method, params object[] args);
abstract member BeginInvoke : Delegate * obj[] -> IAsyncResult
override this.BeginInvoke : Delegate * obj[] -> IAsyncResult
Public Function BeginInvoke (method As Delegate, args As Object()) As IAsyncResult
Public Function BeginInvoke (method As Delegate, ParamArray args As Object()) As IAsyncResult
Parametreler
- method
- Delegate
Parametresinde bulunan args
aynı sayı ve türdeki parametreleri alan bir yöntem temsilcisi.
- args
- Object[]
Verilen yönteme bağımsız değişken olarak geçirecek bir nesne dizisi. Bu, bağımsız değişken gerekmiyorsa olabilir null
.
Döndürülenler
IAsyncResult İşlemin sonucunu BeginInvoke(Delegate) temsil eden bir.
Uygulamalar
Özel durumlar
Uygun pencere tutamacı bulunamıyor.
Örnekler
Aşağıdaki kod örneği, yönteminin BeginInvoke kullanımını gösterir.
private:
delegate void MyDelegate(
Label^ myControl, String^ myArg2 );
void Button_Click( Object^ /*sender*/, EventArgs^ /*e*/ )
{
array<Object^>^myArray = gcnew array<Object^>(2);
myArray[ 0 ] = gcnew Label;
myArray[ 1 ] = "Enter a Value";
myTextBox->BeginInvoke( gcnew MyDelegate( this, &MyForm::DelegateMethod ), myArray );
}
void DelegateMethod( Label^ myControl, String^ myCaption )
{
myControl->Location = Point(16,16);
myControl->Size = System::Drawing::Size( 80, 25 );
myControl->Text = myCaption;
this->Controls->Add( myControl );
}
delegate void InvokeDelegate();
public delegate void MyDelegate(Label myControl, string myArg2);
private void Button_Click(object sender, EventArgs e)
{
object[] myArray = new object[2];
myArray[0] = new Label();
myArray[1] = "Enter a Value";
myTextBox.BeginInvoke(new MyDelegate(DelegateMethod), myArray);
}
public void DelegateMethod(Label myControl, string myCaption)
{
myControl.Location = new Point(16,16);
myControl.Size = new Size(80, 25);
myControl.Text = myCaption;
this.Controls.Add(myControl);
}
Delegate Sub MyDelegate(myControl As Label, myArg2 As String)
Private Sub Button_Click(sender As Object, e As EventArgs)
Dim myArray(1) As Object
myArray(0) = New Label()
myArray(1) = "Enter a Value"
myTextBox.BeginInvoke(New MyDelegate(AddressOf DelegateMethod), myArray)
End Sub
Public Sub DelegateMethod(myControl As Label, myCaption As String)
myControl.Location = New Point(16, 16)
myControl.Size = New Size(80, 25)
myControl.Text = myCaption
Me.Controls.Add(myControl)
End Sub
Açıklamalar
Temsilci zaman uyumsuz olarak çağrılır ve bu yöntem hemen döndürür. Bu yöntemi, denetimin tanıtıcısına sahip olan iş parçacığı bile herhangi bir iş parçacığından çağırabilirsiniz. Denetimin tanıtıcısı henüz yoksa, bu yöntem pencere tutamacına sahip bir denetim veya form bulana kadar denetimin üst zincirinde arama yapar. Uygun tanıtıcı bulunamazsa bir BeginInvoke özel durum oluşturur. Temsilci yöntemindeki özel durumlar izlenmemiş olarak kabul edilir ve uygulamanın izlenmeyen özel durum işleyicisine gönderilir.
Neccesary ise, temsilciden dönüş değerini almak için çağırabilirsiniz EndInvoke , ancak bu gerekli değildir. EndInvoke dönüş değeri alınıncaya kadar engeller.
Not
Denetimdeki yöntemlerin çoğu yalnızca denetimin oluşturulduğu iş parçacığından çağrılabilir. özelliğine InvokeRequired ek olarak, bir denetimde iş parçacığı güvenli olan dört yöntem vardır: Invoke, BeginInvoke, EndInvokeve CreateGraphics denetimin tanıtıcısı zaten oluşturulmuşsa. Denetimin tanıtıcısı bir arka plan iş parçacığında oluşturulmadan önce çağrılması CreateGraphics , iş parçacıkları arası geçersiz çağrılara neden olabilir. Diğer tüm yöntem çağrıları için çağrıyı denetimin iş parçacığına sıralamak için çağırma yöntemlerinden birini kullanmanız gerekir. çağırma yöntemleri her zaman denetimin iş parçacığında geri çağırmalarını çağırır.
Not
İletiyi işlemesi gereken iş parçacığı artık etkin değilse bir özel durum oluşturulabilir.
Ayrıca bkz.
Şunlara uygulanır
BeginInvoke(Action)
Denetimin temel tanıtıcısının oluşturulduğu iş parçacığında belirtilen temsilciyi zaman uyumsuz olarak yürütür.
public:
IAsyncResult ^ BeginInvoke(Action ^ method);
public IAsyncResult BeginInvoke (Action method);
member this.BeginInvoke : Action -> IAsyncResult
Public Function BeginInvoke (method As Action) As IAsyncResult
Parametreler
- method
- Action
Parametre içermeyen bir yöntemin temsilcisi.
Döndürülenler
IAsyncResult İşlemin sonucunu BeginInvoke(Action) temsil eden bir.
Şunlara uygulanır
BeginInvoke(Delegate)
Denetimin temel tanıtıcısının oluşturulduğu iş parçacığında belirtilen temsilciyi zaman uyumsuz olarak yürütür.
public:
IAsyncResult ^ BeginInvoke(Delegate ^ method);
public IAsyncResult BeginInvoke (Delegate method);
member this.BeginInvoke : Delegate -> IAsyncResult
Public Function BeginInvoke (method As Delegate) As IAsyncResult
Parametreler
- method
- Delegate
Parametre içermeyen bir yöntemin temsilcisi.
Döndürülenler
IAsyncResult İşlemin sonucunu BeginInvoke(Delegate) temsil eden bir.
Özel durumlar
Uygun pencere tutamacı bulunamıyor.
Örnekler
Aşağıdaki kod örneği, yönteminin BeginInvoke kullanımını gösterir.
private:
void Invoke_Click( Object^ /*sender*/, EventArgs^ /*e*/ )
{
myTextBox->BeginInvoke( gcnew InvokeDelegate( this, &MyForm::InvokeMethod ) );
}
void InvokeMethod()
{
myTextBox->Text = "Executed the given delegate";
}
public delegate void InvokeDelegate();
private void Invoke_Click(object sender, EventArgs e)
{
myTextBox.BeginInvoke(new InvokeDelegate(InvokeMethod));
}
public void InvokeMethod()
{
myTextBox.Text = "Executed the given delegate";
}
Delegate Sub InvokeDelegate()
Private Sub Invoke_Click(sender As Object, e As EventArgs)
myTextBox.BeginInvoke(New InvokeDelegate(AddressOf InvokeMethod))
End Sub
Public Sub InvokeMethod()
myTextBox.Text = "Executed the given delegate"
End Sub
Açıklamalar
Temsilci zaman uyumsuz olarak çağrılır ve bu yöntem hemen döndürür. Bu yöntemi, denetimin tanıtıcısına sahip olan iş parçacığı bile herhangi bir iş parçacığından çağırabilirsiniz. Denetimin tanıtıcısı henüz yoksa, bu yöntem pencere tutamacına sahip bir denetim veya form bulana kadar denetimin üst zincirinde arama yapar. Uygun tanıtıcı bulunamazsa bir BeginInvoke özel durum oluşturur. Temsilci yöntemindeki özel durumlar izlenmemiş olarak kabul edilir ve uygulamanın izlenmeyen özel durum işleyicisine gönderilir.
Neccesary ise, temsilciden dönüş değerini almak için çağırabilirsiniz EndInvoke , ancak bu gerekli değildir. EndInvoke dönüş değeri alınıncaya kadar engeller.
Not
Denetimdeki yöntemlerin çoğu yalnızca denetimin oluşturulduğu iş parçacığından çağrılabilir. özelliğine InvokeRequired ek olarak, bir denetimde iş parçacığı güvenli olan dört yöntem vardır: Invoke, BeginInvoke, EndInvokeve CreateGraphics denetimin tanıtıcısı zaten oluşturulmuşsa. Denetimin tanıtıcısı bir arka plan iş parçacığında oluşturulmadan önce çağrılması CreateGraphics , iş parçacıkları arası geçersiz çağrılara neden olabilir. Diğer tüm yöntem çağrıları için çağrıyı denetimin iş parçacığına sıralamak için çağırma yöntemlerinden birini kullanmanız gerekir. çağırma yöntemleri her zaman denetimin iş parçacığında geri çağırmalarını çağırır.
Not
İletiyi işlemesi gereken iş parçacığı artık etkin değilse bir özel durum oluşturulabilir.