您的位置:首页 > 编程语言 > C#

C# 异步操作

2015-03-26 16:17 78 查看
在程序中,普通的方法是单线程的。但中途如果有大型的操作,比如读取大文件,大批量操作数据库,网络传输等,都会导致程序阻塞,表现在界面上就是程序卡或者死掉,界面元素不动了,不响应了。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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: