架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 18607|回复: 2

[资料] .net/c# Thread线程Suspend和Resume过时解决方案

[复制链接]
发表于 2018-5-17 09:36:10 | 显示全部楼层 |阅读模式
Thread.Suspend has been deprecated.  Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources.  http://go.microsoft.com/fwlink/?linkid=14202
Thread.Resume has been deprecated.  Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources.  http://go.microsoft.com/fwlink/?linkid=14202
线程想暂停或则继续,以前用过Suspend和Resume两个方法,用这两个方法去操作线程,其实是有问题的,当时也没管,今天就拿出来研究下吧!

用上面两个方法去挂起和继续线程会有什么问题呢?

如果,这两个方法操作太快会抛异常的,例如:我们调用Suspend方法挂起线程,然后,立马调用Resume方法继续挂起的线程,这时就有可能会出问题。

因为,你在调用Suspend方法挂起线程后,线程并不一定立马会被挂起,这里需要处理时间,这时,你立马调用Resume方法继续挂起的线程,程序就立马挂掉了!

微软给的解释为:


请不要使用 Suspend 和 Resume 方法来同步线程活动。 有没有办法知道当你暂停执行线程什么代码。 如果在安全权限评估期间持有锁,您挂起线程中的其他线程 AppDomain 可能被阻止。 如果执行类构造函数时,您挂起线程中的其他线程 AppDomain 中尝试使用类被阻止。 可以很容易发生死锁。

//
        // 摘要:
        //     继续已挂起的线程。
        //
        // 异常:
        //   T:System.Threading.ThreadStateException:
        //     该线程尚未启动、 已死或未处于挂起状态。
        //
        //   T:System.Security.SecurityException:
        //     调用方没有适当的 System.Security.Permissions.SecurityPermission。
        [Obsolete("Thread.Resume has been deprecated.  Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources.  http://go.microsoft.com/fwlink/?linkid=14202", false)]
        [SecuritySafeCritical]
        public void Resume();

怎么解决这个问题呢?

QQ截图20180517092217.jpg

ManualResetEvent 类

通知一个或多个正在等待的线程已发生事件。 此类不能被继承。


测试代码如下:








上一篇:C#发送短信到手机
下一篇:sql去除数据中的空格
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2018-5-17 21:14:51 | 显示全部楼层
_event.Set(); 是继续线程
_event.Reset(); 是暂停线程
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2018-5-29 14:58:49 | 显示全部楼层
如果获得当前线程的ID用:

Thread.CurrentThread.ManagedThreadId.ToString() (推荐)
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-19 09:14

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表