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);

 

posted @ 2015-03-26 16:17  及乌及国  阅读(255)  评论(0编辑  收藏  举报