【发布时间】:2013-04-04 04:12:21
【问题描述】:
我正在开发一个应用程序,用户可以在其中启动一个在单独线程上产生的“任务”。
用户很可能会启动这个任务,然后重新启动几次,每次参数略有不同。
我可以使用Thread.Abort,或者我可以重写任务中的代码,以便任务检查用户是否要重新启动它的许多点。
Thread.Abort应该只在特殊情况下使用,还是可以接受这种情况?
【问题讨论】:
标签: c# multithreading
我正在开发一个应用程序,用户可以在其中启动一个在单独线程上产生的“任务”。
用户很可能会启动这个任务,然后重新启动几次,每次参数略有不同。
我可以使用Thread.Abort,或者我可以重写任务中的代码,以便任务检查用户是否要重新启动它的许多点。
Thread.Abort应该只在特殊情况下使用,还是可以接受这种情况?
【问题讨论】:
标签: c# multithreading
如果线程执行需要停止,检查代码中的特定位置通常会更好,因为您无法使用Thread.Abort 控制代码执行停止的位置。这可能会使应用程序处于某种不确定(可能无效)的状态,具体取决于线程的作用。另一个优势是不必处理ThreadAbortException。更多解释here.
但是,根据您的问题,我了解到中止线程的唯一原因是使用不同的参数重新启动它。相反,向线程发出参数已更改的信号,并重用同一线程。创建一个新线程是一项相对昂贵的操作,在您的情况下可以避免。
【讨论】:
ThreadAbortException 上的链接,非常有帮助