在C#中,使用BeginInvoke
方法可以異步地調用一個方法,并且可以提供一個回調函數來處理異步調用的結果。下面是一個簡單的示例,演示了如何使用BeginInvoke
處理回調函數:
private void AsyncCallback(IAsyncResult result)
{
// 獲取異步調用的返回值
int returnValue = (int)result.AsyncState;
// 處理返回值
Console.WriteLine("異步調用返回值: " + returnValue);
}
在這個示例中,AsyncCallback
方法接收一個IAsyncResult
參數,該參數包含了異步調用的狀態信息。我們可以通過AsyncState
屬性獲取異步調用的返回值。
BeginInvoke
方法啟動異步調用,同時傳遞回調方法:private void StartAsyncCall()
{
// 定義要異步調用的方法的參數
int inputParam = 10;
// 創建一個委托,指向要異步調用的方法
Action<int> methodToCall = new Action<int>(DoSomething);
// 使用BeginInvoke方法啟動異步調用,并傳遞回調方法
IAsyncResult asyncResult = methodToCall.BeginInvoke(inputParam, AsyncCallback, inputParam);
// 在這里可以執行其他操作,而不必等待異步調用完成
}
在這個示例中,我們定義了一個DoSomething
方法,該方法接收一個整數參數并返回一個整數。我們使用BeginInvoke
方法異步調用DoSomething
方法,并將AsyncCallback
方法作為回調函數傳遞。同時,我們將inputParam
作為AsyncState
屬性傳遞給回調函數,以便在回調函數中獲取該值。
private int DoSomething(int input)
{
// 在這里執行一些操作,并返回結果
return input * 2;
}
在這個示例中,DoSomething
方法接收一個整數參數input
,并返回該參數的兩倍。
當調用StartAsyncCall
方法時,DoSomething
方法將異步執行,并且AsyncCallback
方法將在異步調用完成后被調用,用于處理異步調用的結果。
請注意,以上示例僅用于演示目的,實際應用中可能需要根據具體需求進行調整。