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!