宣告
public delegate string myDelegate(int myNumber);
//要被呼叫的函式
public string WelkinMethod(int myNumber)
{
}
1.用EndInvoke去呼叫處理完的結果
myDelegate del = new myDelegate(WelkinMethod);
IAsyncResult result;
result = del.BeginInvoke(123, null, null);
//會等待上面那行處理完
//這邊可以做自己的事
//等到想要取值時再用下面方法去取值,
//不過如果非同步還沒完成的話,就會停在那
string ResultString;
ResultString = del.EndInvoke(result);
2.等待完成後再去呼叫處理完的結果
myDelegate del = new myDelegate(WelkinMethod);
IAsyncResult result;
result = del.BeginInvoke(123, null, null);
while (!(result.IsCompleted))
{
//這邊可以做自己的事
}
string ResultString;
ResultString = del.EndInvoke(result);
3.非同步完成後,去呼叫另外一個函式
private void myCallAsync()
{
myDelegate del = new myDelegate(WelkinMethod);
IAsyncResult result;
AsyncCallback callback = new AsyncCallback(myCallbackMethod);
result = del.BeginInvoke(123, callback, del);
}
private void myCallbackMethod(IAsyncResult result)
{
myDelegate del;
string ResultString;
del = (myDelegate)result.AsyncState;
ResultString = del.EndInvoke(result);
}