Control.BeginInvoke Yöntem

Tanım

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

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

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

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.

Ayrıca bkz.

Şunlara uygulanır