try-catch-finally 引发的奇怪问题
为了找到原因,我在本地进行调试,发现程序里用到了多线程,而代码正是卡在了workThread.Abort()语句而无法停止。
为什么不能Abort? 继续看线程调用的方法的代码,发现没有什么特殊的代码,只是在其中用了Thread.Sleep进行长时间等待。
难道是这个引起的? 写了一个测试程序验证,
class Program { private readonly Thread workThread; public Program() { workThread = new Thread(DoWork); } static void Main(string[] args) { new Program().Work(); Console.ReadLine(); } private void Work() { workThread.Start(); Thread.Sleep(1 * 1000); Console.WriteLine("aborting"); workThread.Abort(); Console.WriteLine("aborted"); } private void DoWork() { Console.WriteLine("started"); Thread.Sleep(300 * 1000); } } |
发现可以正常终止。
started
aborting
aborted
购买须知:请加客服微信咨询购买,本程序源码配有系统运行视频,请联系客服索要视频文件。
服务范围:定制各类计算机程序设计,vue、jsp、java 各类框架;开发工具 eclipse / myeclipse / idea / vs 等;wap、android、ssm、springboot、asp.net、php、python(爬虫、django、flask)、node.js、react、winform、uniapp 小程序等。
服务范围:定制各类计算机程序设计,vue、jsp、java 各类框架;开发工具 eclipse / myeclipse / idea / vs 等;wap、android、ssm、springboot、asp.net、php、python(爬虫、django、flask)、node.js、react、winform、uniapp 小程序等。
联系方式
扫码加客服微信 →
相关资讯
更多 →
