概述
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线程取消模型取消异步委托的全部内容,希望文章能够帮你解决使用.NET线程取消模型取消异步委托所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复