c# 異步編程總結


異步編程前提

1.學委托 delegate

其中委托中的beginInvoke()和endInvoke()方法必須要會。

2.學習回調函數

(也可以不用,但是一般建議用回調函數中執行endinvoke()方法)

回調函數也是一個方法, 只不過是把這個方法作為參數傳遞到另一個以回調函數作為參數的方法中,

當這個方法執行完之后,就會自動執行這個回調函數方法。
注意
1必須是主方法必須要有回調函數作為參數 
2沒有返回類型

異步編程適用范圍


1.異步編程是建立在委托基礎上的
2.異步調用的每一個方法都是在獨立的線程中執行的,因此可以說一個簡化的多線程
3.比較適用在后台運行比較耗時的 簡單任務,並且任務之間是獨立的,不能直接訪問可視化控件。
4.如果后台任務按照特定順序執行或者共享特定資源,不太適合異步,建議直接使用多線程編程

 異步編程步驟

1.定義一個委托
代碼:
public delegate int MyDelegate(int i)
2.根據委托定義實現方法 可以是多個
代碼:
private int MyExectue1(int i)
{
return i=i+1;
}
private int MyExectue2(int i)
{
return i*i;
}
3.實例化委托,並綁定方法
代碼:
MyDelegate mydel=MyExectue1; //這里不需要變量列表
4.開始執行委托,並將委托狀態復制給 一個委托狀態接口(IAsyncResult)
代碼:
IAsyncResult asyncres=mydel.beginInvoke(10);
5.開始其他不費時的任務
6.使用委托的endInvoke()方法得到異步操作結果
int result=mydel.endInvoke(asyncres,MyCallback,回調函數所用方法);

7.定義回調函數

private void MyCallback(IAsyncResult result)
{
int res = mydel.EndInvoke(result);
Console.WriteLine("第{0}個計算結果是:{1}", result.AsyncState.ToString(), res);
}




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM