在C#中,BeginInvoke
方法用于在后臺線程上異步執行委托。
下面是BeginInvoke
的使用示例:
public delegate void MyDelegate(string message);
MyDelegate myDelegate = new MyDelegate(MyMethod);
BeginInvoke
方法,傳遞相應的參數和回調方法。例如:myDelegate.BeginInvoke("Hello", MyCallback, null);
在上面的示例中,第一個參數是要傳遞給異步方法的參數。第二個參數是一個回調方法,用于在異步操作完成后執行。第三個參數是一個用于傳遞額外數據的對象。
private void MyCallback(IAsyncResult result)
{
// 使用EndInvoke方法獲取異步操作的結果
MyDelegate myDelegate = (MyDelegate)((AsyncResult)result).AsyncDelegate;
myDelegate.EndInvoke(result);
}
在回調方法中,可以使用EndInvoke
方法獲取異步操作的結果。請注意,EndInvoke
方法會阻塞當前線程,直到異步操作完成。
完整的示例代碼如下:
using System;
using System.Threading;
public delegate void MyDelegate(string message);
class Program
{
static void Main(string[] args)
{
MyDelegate myDelegate = new MyDelegate(MyMethod);
myDelegate.BeginInvoke("Hello", MyCallback, null);
// 等待異步操作完成
Thread.Sleep(1000);
}
static void MyMethod(string message)
{
Console.WriteLine(message);
}
static void MyCallback(IAsyncResult result)
{
MyDelegate myDelegate = (MyDelegate)((AsyncResult)result).AsyncDelegate;
myDelegate.EndInvoke(result);
}
}
在上面的示例中,MyMethod
方法會在后臺線程上異步執行,并在控制臺輸出"Hello"。