C# 异步操作
在程序中,普通的方法是單線程的。但中途如果有大型的操作,比如讀取大文件,大批量操作數據庫,網絡傳輸等,都會導致程序阻塞,表現在界面上就是程序卡或者死掉,界面元素不動了,不響應了。C#異步調用很好的解決了這些問題。C#異步調用執行某個方法,程序立即開辟一個新線程去執行你的方法,主線程就不會死掉了。在這里需要注意,C#異步調用出來的新線程必須回收,不回收是浪費資源的可恥行為。
C#在回收線程時使用的是回調函數。C#異步調用結束后,自動調用此回調函數。C#中使用委托實際是使用的異步操作。下面為實例:
第一步:首先定義一個委托。
private delegate string DelegateName(int Num,out int Num2);
第二步:需要異步執行的方法。
private string MethodName(int Num,out int Num2)
{
Num2=Num;
return "Hello C#";
}
第三步:定義異步操作后執行的回調函數。
private void CallbackMethod(IAsyncResult ar)
{
//獲取委托對象。
DelegateName dn=(DelegateName)ar.AsyncState;
//回收線程資源。
dn.EndInvoke(ar);
}
第四步:主程序代碼
//實例化委托
DelegateName dn=new DelegateName(MethodName);
//執行異步操作
dn.BeginInvok(1000, new AsyncCallback(CallbackMethod), dn);
總結
- 上一篇: 《隐秘的档案》惊涛骇浪通过攻略
- 下一篇: 别了,DjVu!