2025年vconsole是什么意思(vconsole是什么意思怎么关闭)

vconsole是什么意思(vconsole是什么意思怎么关闭)协作式取消其英文为 cooperative cancellation model 在 26 4 节中只是很简单的介绍了通过 Cancellation 来终结一个异步操作或长时间执行的同步操作 没有具体的分析和说明为什么要这样用 因为终结一个异步操作的方法有很多 可以使用最简单的和变量结束异步操作 因此本次详细整理 CLR 的在线程取消的模式 本文参考了 MSDN 及其他网友的相关资料 具体的引用会在文章的尾端 从



协作式取消的使用步骤如下:
1、创建CancellationTokenSource实例
2、使用CancellationTokenSource实例的Token属性,获取CancellationToken,并将其传至Task或线程的相关方法中
3、在task或thread中提供根据CancellationToken.IsCancellationRequested属性值进行判定是否应该停止操作的机制
4、在程序中调用CancellationTokenSource实例的cancel方法
这儿有一篇文章,是使用CancellationTokenSource的具体例子。.Net 4.5中通过CancellationTokenSource实现对超时任务的取消




1、定义
CancellationTokenSource类的定义如下:

 
  

因本类实现了IDisposable的方法,因此在用完时需调用其dispose方法,或者是使用using
2、CancellationTokenSource与CancellationToken的关系
两者的关系如图所示:
两者的关系
通过这张图,可得出:
1、不同的操作使用相同的实例,就可以达到一次调用取消多个操作的目的。
2、为什么会是,而不是类
3、其他说明
1、除了与之外,还有一个异常类,这个的异常类接受作为参数,因此在判断具体异常时,可使用本类
4、代码说明
代码如下:









 
  

以上方法使用的系统遗留方式,但是希望停止一个task时,参见如下:How to: Cancel a Task and Its Children

在协作式取消操作中,通常都是在方法中通过判断的属性,然后根据这个属性的值对操作(或方法)进行相应的处理。因此,常用的协作式取消模式就是。的只能被设置一次,即当该属性被设置为时,其不可能再被设为,不能重复利用。另外,在被“用过”后,不能重复使用该对象。即,对象只能使用一次,若希望重复使用,需要在每次使用时,创建新的对象。
除了操作取消之外,还有另外一种情况,我希望当实例调用方法时,调用某个实例中的某个方法。而这个方法内部没有对象。这个时候可以使用的方法。
方法的定义如下:

 
  

其中Action是.NET内部的自定义的委托,其具体的定义:

 
  

可使用CancellationToken.Register方法完成对实例中方法的调用。如下有一个例子:

 
  

在一般情况下,在方法内部使用使用属性判断其值,然后根据其值进行后续操作。这种模式可适应大部分的情况。但是有些情况需要额外的处理方式。
特别是当用户在使用一些外部的代码时,上面提到的方式可能效果不好,更好的方法就是调用的方法 ,让它抛出异常,外部的截住异常,然后通过判断异常的的相关属性值,再进行相应的处理。
的方法相当于:

 
  

因此在使用本方法时,通常的用法是(假设自己正在写的代码会被编译为,供其他人调用,则自己写的代码应该是这样的):

 
  

当别人使用时,需要在块中监听异常,代码如下:

 
  

以上是处理或写供别人使用的或时应该遵循的方法。
在方法内部进行处理相关流程时,对于监听用户是否进行了取消操作,有如下的几种方式:
1.轮询式监听(Listening by Polling)
这种方法是最常用的,也是上面提到的,样例如下:


 
  

2.通过回调方法处理取消操作(Listening by Registering a Callback)
在比较复杂的情况下,可以使用方法,注册或登记取消回调方法。如下所示:

 
  

在使用方法时,有几个注意事项:
1、方法尽量要快!不要阻碍线程!因此Cancel方法要等到callback方法结束后才返回
2、方法要尽量不要再使用多线程。
3.多对象关联
可通过CancellationTokenSource的CreateLinkedTokenSource方法链接多个对象,从而形成一个新的CancellationTokenSource对象
链接中的任何一个对象使用了cancel方法,这个新的“链式”对象也会被取消。如下:




 
  

写在本节学习最后
1、若自己的程序需要封装为library,供其他人调用,则需要做好两点:1、方法需要接受一个token作为参数;2、需要较好的处理异常。
2、本节学习主要是结合:《CLR via C#》、MSDN的官网具体的网址在这儿, 以及网友的相关的文章。

今天的文章 2025年vconsole是什么意思(vconsole是什么意思怎么关闭)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-10-10 15:11
下一篇 2025-10-10 20:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/4906.html