c#中异步调用asyn

来源:互联网 发布:变革管理 知乎 编辑:程序博客网 时间:2024/06/05 23:54

1定义委托

public delegate int OrderBackAsyncExecuteHandler(List<OrderBackModel> objList, List<OrderBackModel> objErrorList, string bankId, string bankAccountNo, string fileName, short userId, string realName);//批量异步执行


2引用

OrderBackAsyncExecuteHandler method = OrderBackAsyncExecute;//异步调用的方法,方法要定义成async
OrderBackAsyncExecuteHandler handler = new OrderBackAsyncExecuteHandler(OrderBackAsyncExecute);
IAsyncResult result = handler.BeginInvoke(objList, objErrorList, bankId, bankAccountNo, file.FileName, userId, realName, new AsyncCallback(Callback), null);


3回调

public void Callback(IAsyncResult asyncResult)
        {
          try
            {
               OrderBackAsyncExecuteHandler handler = (OrderBackAsyncExecuteHandler)((System.Runtime.Remoting.Messaging.AsyncResult)asyncResult).AsyncDelegate;


              LogHelper.Write("批量执行回调结果:" + handler.EndInvoke(asyncResult));//注意: BeginInvoke和EndInvoke必须成对调用.即使不需要返回值,但EndInvoke还是必须调用,否则可能会造成内存泄漏。
               //(asyncResult.AsyncState as AddHandler).EndInvoke(asyncResult);
               LogHelper.Write("批量执行释放资源成功。");
           }
           catch (Exception ex)
           {
              LogHelper.Write("批量执行释放资源失败。" + ex);
           }
        }

0 0
原创粉丝点击