apl*_*vin 10 c# multithreading ironpython abort
我有一个包含执行IronPython脚本的线程.出于某种原因,我可能需要随时停止此线程,包括脚本执行.怎么做到这一点?第一个想法是Thread.Abort(),但它已知是邪恶的......
Eri*_*ert 19
什么是停止正在运行的线程的安全方法?
将线程放在自己的进程中.当你想要它停止时,杀死进程.
这是杀死线程的唯一安全方法.中止线程会严重破坏进程的稳定性并丢失用户数据.有没有办法避免"丢失用户数据"的情况,如果你真的,真的需要能够杀死一个线程,可以做任何事情.避免破坏正在调用中止的进程的唯一方法是完全使它们成为不同的进程.
从你的问题和随后的评论中我可以建议你两个选项,还有一些额外的"警告":
如果你的线程在每次迭代时循环执行某些东西,你可以设置一个volatile布尔标志,使它在完成当前迭代后退出(伪代码因为我不熟悉python):
while shouldExit = false
// do stuff
Run Code Online (Sandbox Code Playgroud)
然后将标志设置为true您希望线程停止的时间,并在下次检查条件时停止.
如果您不能等待迭代完成并需要立即停止,那么您可以选择Thread.Abort,但绝对确保您无法在不一致的状态下保留打开的文件句柄,套接字,锁或其他任何类似的东西.
| 归档时间: |
|
| 查看次数: |
29988 次 |
| 最近记录: |