源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

基于使用BeginInvoke,EndInvoke异步调用委托的实现代码

  • 时间:2022-07-21 01:16 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:基于使用BeginInvoke,EndInvoke异步调用委托的实现代码
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplication1 {     class Program     {         static void Main(string[] args)         {             Console.WriteLine("Main ThreadId = " + Thread.CurrentThread.ManagedThreadId);             //给委托赋值             Func<long, long> delegateMethod = new Func<long, long>(CalcSum);             //异步执行委托,这里把委托本身作为asyncState对象传进去,在回调函数中需要使用委托的EndInvoke来获得结果             delegateMethod.BeginInvoke(200, DoneCallback, delegateMethod);             //异步执行委托,抛出异常             delegateMethod.BeginInvoke(10000000000, DoneCallback, delegateMethod);             Console.ReadLine();         }         //委托回调函数         static void DoneCallback(IAsyncResult asyncResult)         {             //到这儿委托已经在异步线程中执行完毕             Console.WriteLine("DoneCallback ThreadId = " + Thread.CurrentThread.ManagedThreadId);             Func<long, long> method = (Func<long, long>)asyncResult.AsyncState;             //委托执行的异常会在EndInvoke时抛出来             try {                 //使用BeginInvoke时传入委托的EndInvoke获得计算结果,这时候计算结果已经出来了,有异常的话也在这儿抛出来                 long sum = method.EndInvoke(asyncResult);                 Console.WriteLine("sum = {0}",sum);             }             catch (OverflowException)             {                 Console.WriteLine("运算溢出了");             }         }         //委托方法         static long CalcSum(long topLimit)         {             //委托在另一个线程中开始执行             Console.WriteLine("Calc ThreadId = " + Thread.CurrentThread.ManagedThreadId);             checked             {                 long result = 0;                 for (long i = 0; i < topLimit; i++)                 {                     result += i;                 }                 return result;             }         }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部