是的,C# 中的 BeginInvoke
方法可以用于異步執行。BeginInvoke
是 Delegate
類的一個方法,它允許你在另一個線程上異步調用委托(delegate)。當你調用 BeginInvoke
時,它會立即返回一個 IAsyncResult
對象,表示異步操作的狀態。你可以在 IAsyncResult
對象上調用 EndInvoke
方法來獲取異步操作的結果。
以下是一個簡單的示例,展示了如何使用 BeginInvoke
異步執行一個方法:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
// 創建一個委托
Action myDelegate = () => Console.WriteLine("Hello from a separate thread!");
// 調用 BeginInvoke 以異步執行委托
IAsyncResult asyncResult = myDelegate.BeginInvoke(null, null);
// 在主線程上執行其他任務
Console.WriteLine("Doing some work on the main thread...");
// 等待異步操作完成
asyncResult.AsyncWaitHandle.WaitOne();
// 調用 EndInvoke 以獲取異步操作的結果
myDelegate.EndInvoke(asyncResult);
}
}
在這個示例中,我們創建了一個名為 myDelegate
的委托,它只是打印一條消息。然后,我們使用 BeginInvoke
異步調用該委托。在等待異步操作完成的過程中,我們在主線程上執行其他任務。最后,我們使用 EndInvoke
獲取異步操作的結果。