宣告
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);
}

welkingunther 發表在 痞客邦 PIXNET 留言(0) 人氣()