架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 26432|回复: 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.  超链接登录可见。
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.  超链接登录可见。
线程想暂停或则继续,以前用过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.  超链接登录可见。", 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, 2025-6-28 20:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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