BeginInvoke
是 C# 中用于在異步方法中啟動一個新線程并立即返回的方法。它通常與委托(Delegate)一起使用。下面是一個簡單的示例,說明如何使用 BeginInvoke
:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
// 創建一個委托,指向要異步執行的方法
Action myDelegate = MyAsyncMethod;
// 使用 BeginInvoke 啟動一個新線程并立即返回
IAsyncResult result = myDelegate.BeginInvoke(null, null);
// 在主線程中等待異步方法完成
result.AsyncWaitHandle.WaitOne();
// 獲取異步方法的返回值(如果有)
var returnValue = myDelegate.EndInvoke(result);
Console.WriteLine("異步方法已完成。返回值: " + returnValue);
}
static async Task MyAsyncMethod()
{
// 模擬一個耗時操作
await Task.Delay(3000);
// 異步方法的返回值
int returnValue = 42;
Console.WriteLine("異步方法正在執行...");
}
}
在這個示例中,我們創建了一個名為 MyAsyncMethod
的異步方法。然后,我們創建了一個委托 myDelegate
,指向 MyAsyncMethod
。接下來,我們使用 BeginInvoke
啟動一個新線程并立即返回。在主線程中,我們等待異步方法完成,然后使用 EndInvoke
獲取異步方法的返回值。
請注意,BeginInvoke
和 EndInvoke
通常與 async
和 await
關鍵字一起使用,以實現更簡潔的異步編程模式。上面的示例僅用于演示 BeginInvoke
的基本用法。在實際項目中,你可能希望使用 async
和 await
關鍵字來簡化代碼。