博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用BeginInvoke,EndInvoke异步调用委托
阅读量:6160 次
发布时间:2019-06-21

本文共 1801 字,大约阅读时间需要 6 分钟。

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
delegateMethod = new Func
(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
method = (Func
)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; } } }}

  

转载地址:http://fpefa.baihongyu.com/

你可能感兴趣的文章
C++解析XML--使用CMarkup类解析XML
查看>>
P2P应用层组播
查看>>
Sharepoint学习笔记—修改SharePoint的Timeouts (Execution Timeout)
查看>>
CSS引入的方式有哪些? link和@import的区别?
查看>>
Redis 介绍2——常见基本类型
查看>>
asp.net开发mysql注意事项
查看>>
(转)Cortex-M3 (NXP LPC1788)之EEPROM存储器
查看>>
ubuntu set defult jdk
查看>>
[译]ECMAScript.next:TC39 2012年9月会议总结
查看>>
【Xcode】编辑与调试
查看>>
用tar和split将文件分包压缩
查看>>
[BTS] Could not find stored procedure 'mp_sap_check_tid'
查看>>
PLSQL DBMS_DDL.ALTER_COMPILE
查看>>
Activity生命周期
查看>>
高仿UC浏览器弹出菜单效果
查看>>
Ubuntu忘记密码,进不了系统的解决方法
查看>>
[原创]白盒测试技术思维导图
查看>>
<<Information Store and Management>> 读书笔记 之八
查看>>
Windows 8 开发之设置合约
查看>>
闲说HeartBeat心跳包和TCP协议的KeepAlive机制
查看>>