Oti*_*iel 1 c# multithreading exception
环境:
假设我有一个主要应用程序:
我有两个计时器:
timer1
勾选时,应用程序正在检索新请求并将它们存储在a中Queue
,timer2
勾选时,应用程序将请求以新的方式执行任务Thread
.当用户要求停止所有任务以释放资源时,我打算简单地杀死运行当前任务的线程Thread.Abort()
.
问题:
我希望能够在从线程类中杀死线程时保存一些最后的配置.
题:
有没有办法检测线程何时被杀死,如Thread.OnAborting()
事件?
或者也许我可以ThreadAbortException
在调用Thread.Abort()
方法时捕获引发的?(如果是这样,我真的不知道该怎么做,你能提供一些代码示例吗?)
除了捕捉ThreadAbortException
没有其他机制存在.当然,你真的不想打电话Thread.Abort
,因为ThreadAbortException
异步注入和那些注入点是不可预测的.例如,它可能处于写入的中间,这可能使整个AppDomain处于损坏状态..NET 2.0增加了约束执行区域,这使得处理线程中止更安全,更容易处理,但是编写一个可以保证AppDomain不会被破坏的代码块仍然非常困难.我的建议是坚持这个Thread.Abort
想法.
相反,您想要做的是向线程发送信号并允许它自己优雅地终止.这可以通过以下机制完成.
Thread.Interrupt
您可以在此处查看我的答案以获取更多信息.
归档时间: |
|
查看次数: |
102 次 |
最近记录: |