我是靠谱客的博主 怕黑夏天,这篇文章主要介绍使用.NET线程取消模型取消异步委托,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; using static System.Console; using System.Runtime.Remoting.Messaging; namespace 线程取消模型取消异步委托 { class Program { public delegate bool 业务逻辑Delegate(CancellationToken cn); static void Main(string[] args) { var b = new 业务逻辑Delegate(业务逻辑); var 取消令牌 = new CancellationTokenSource(); var callBack = new AsyncCallback(回调函数); b.BeginInvoke(取消令牌.Token, callBack, null); Console.WriteLine("请输入任意键取消异步操作"); Console.ReadLine(); 取消令牌.Cancel(); Console.ReadLine(); } static bool 业务逻辑(CancellationToken cn) { for (int i = 0; i < int.MaxValue; i++) { cn.ThrowIfCancellationRequested(); } return false; } static void 回调函数(IAsyncResult iar) { //BeginInvoke 的时候不会抛出异常 只有在EndInvoke中才会把BeginInvoke的异常重新抛出 var ar = (AsyncResult)iar; var dl = (业务逻辑Delegate)ar.AsyncDelegate; try { Console.WriteLine($"任务执行完毕。{dl.EndInvoke(iar)}"); } catch (OperationCanceledException ex) { Console.WriteLine("取消任务成功。"); } } } }

最后

以上就是怕黑夏天最近收集整理的关于使用.NET线程取消模型取消异步委托的全部内容,更多相关使用内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(133)

评论列表共有 0 条评论

立即
投稿
返回
顶部