Control.BeginInvoke Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menjalankan delegasi secara asinkron pada utas tempat handel yang mendasar kontrol dibuat.
Overload
| Nama | Deskripsi |
|---|---|
| BeginInvoke(Delegate, Object[]) |
Menjalankan delegasi yang ditentukan secara asinkron dengan argumen yang ditentukan, pada utas tempat handel mendasar kontrol dibuat. |
| BeginInvoke(Action) |
Menjalankan delegasi yang ditentukan secara asinkron pada utas tempat handel yang mendasar kontrol dibuat. |
| BeginInvoke(Delegate) |
Menjalankan delegasi yang ditentukan secara asinkron pada utas tempat handel yang mendasar kontrol dibuat. |
BeginInvoke(Delegate, Object[])
- Sumber:
- Control.cs
- Sumber:
- Control.cs
- Sumber:
- Control.cs
- Sumber:
- Control.cs
- Sumber:
- Control.cs
Menjalankan delegasi yang ditentukan secara asinkron dengan argumen yang ditentukan, pada utas tempat handel mendasar kontrol dibuat.
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);
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
Parameter
- method
- Delegate
Delegasi ke metode yang mengambil parameter dengan angka dan jenis yang sama yang terkandung dalam args parameter .
- args
- Object[]
Array objek untuk diteruskan sebagai argumen ke metode yang diberikan. Ini bisa null jika tidak ada argumen yang diperlukan.
Mengembalikan
Yang IAsyncResult mewakili hasil BeginInvoke(Delegate) operasi.
Penerapan
Pengecualian
Tidak ada handel jendela yang sesuai yang dapat ditemukan.
Contoh
Contoh kode berikut menunjukkan penggunaan BeginInvoke metode .
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
Keterangan
Delegasi dipanggil secara asinkron, dan metode ini segera kembali. Anda dapat memanggil metode ini dari utas apa pun, bahkan utas yang memiliki handel kontrol. Jika handel kontrol belum ada, metode ini mencari rantai induk kontrol sampai menemukan kontrol atau formulir yang memang memiliki handel jendela. Jika tidak ada handel yang sesuai yang dapat ditemukan, BeginInvoke akan melemparkan pengecualian. Pengecualian dalam metode delegasi dianggap tidak tertahankan dan akan dikirim ke handler pengecualian aplikasi yang tidak tertahankan.
Anda dapat memanggil EndInvoke untuk mengambil nilai pengembalian dari delegasi, jika neccesary, tetapi ini tidak diperlukan. EndInvoke akan memblokir hingga nilai pengembalian dapat diambil.
Nota
Sebagian besar metode pada kontrol hanya dapat dipanggil dari utas tempat kontrol dibuat. Selain InvokeRequired properti , ada empat metode pada kontrol yang aman utas: Invoke, , BeginInvokeEndInvoke, dan CreateGraphics jika handel untuk kontrol telah dibuat. Memanggil CreateGraphics sebelum handel kontrol dibuat pada utas latar belakang dapat menyebabkan panggilan lintas utas ilegal. Untuk semua panggilan metode lainnya, Anda harus menggunakan salah satu metode pemanggilan untuk melakukan marshal panggilan ke utas kontrol. Metode pemanggilan selalu memanggil panggilan balik mereka pada utas kontrol.
Nota
Pengecualian mungkin dilemparkan jika utas yang seharusnya memproses pesan tidak lagi aktif.
Lihat juga
Berlaku untuk
BeginInvoke(Action)
- Sumber:
- Control.cs
- Sumber:
- Control.cs
- Sumber:
- Control.cs
- Sumber:
- Control.cs
- Sumber:
- Control.cs
Menjalankan delegasi yang ditentukan secara asinkron pada utas tempat handel yang mendasar kontrol dibuat.
public:
IAsyncResult ^ BeginInvoke(Action ^ method);
public IAsyncResult BeginInvoke(Action method);
member this.BeginInvoke : Action -> IAsyncResult
Public Function BeginInvoke (method As Action) As IAsyncResult
Parameter
- method
- Action
Delegasi ke metode yang tidak mengambil parameter.
Mengembalikan
Yang IAsyncResult mewakili hasil BeginInvoke(Action) operasi.
Berlaku untuk
BeginInvoke(Delegate)
- Sumber:
- Control.cs
- Sumber:
- Control.cs
- Sumber:
- Control.cs
- Sumber:
- Control.cs
- Sumber:
- Control.cs
Menjalankan delegasi yang ditentukan secara asinkron pada utas tempat handel yang mendasar kontrol dibuat.
public:
IAsyncResult ^ BeginInvoke(Delegate ^ method);
public IAsyncResult BeginInvoke(Delegate method);
member this.BeginInvoke : Delegate -> IAsyncResult
Public Function BeginInvoke (method As Delegate) As IAsyncResult
Parameter
- method
- Delegate
Delegasi ke metode yang tidak mengambil parameter.
Mengembalikan
Yang IAsyncResult mewakili hasil BeginInvoke(Delegate) operasi.
Pengecualian
Tidak ada handel jendela yang sesuai yang dapat ditemukan.
Contoh
Contoh kode berikut menunjukkan penggunaan BeginInvoke metode .
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
Keterangan
Delegasi dipanggil secara asinkron, dan metode ini segera kembali. Anda dapat memanggil metode ini dari utas apa pun, bahkan utas yang memiliki handel kontrol. Jika handel kontrol belum ada, metode ini mencari rantai induk kontrol sampai menemukan kontrol atau formulir yang memang memiliki handel jendela. Jika tidak ada handel yang sesuai yang dapat ditemukan, BeginInvoke akan melemparkan pengecualian. Pengecualian dalam metode delegasi dianggap tidak tertahankan dan akan dikirim ke handler pengecualian aplikasi yang tidak tertahankan.
Anda dapat memanggil EndInvoke untuk mengambil nilai pengembalian dari delegasi, jika neccesary, tetapi ini tidak diperlukan. EndInvoke akan memblokir hingga nilai pengembalian dapat diambil.
Nota
Sebagian besar metode pada kontrol hanya dapat dipanggil dari utas tempat kontrol dibuat. Selain InvokeRequired properti , ada empat metode pada kontrol yang aman utas: Invoke, , BeginInvokeEndInvoke, dan CreateGraphics jika handel untuk kontrol telah dibuat. Memanggil CreateGraphics sebelum handel kontrol dibuat pada utas latar belakang dapat menyebabkan panggilan lintas utas ilegal. Untuk semua panggilan metode lainnya, Anda harus menggunakan salah satu metode pemanggilan untuk melakukan marshal panggilan ke utas kontrol. Metode pemanggilan selalu memanggil panggilan balik mereka pada utas kontrol.
Nota
Pengecualian mungkin dilemparkan jika utas yang seharusnya memproses pesan tidak lagi aktif.