如何中断正在运行的线程并使其运行另一种方法?

时间:2011-12-29 09:26:57

标签: c# multithreading .net-3.5

我正在使用.Net 3.5(C#),我有一个使用Start和Stop方法的类。 我正在使用BackgroundWorker.DoWork来从另一个线程调用Start方法 我希望能够从我的主线程发送命令到该线程(运行Start方法的线程)并告诉它停止当前正在运行的方法并开始运行另一个(即停止运行Start方法并开始运行Stop方法)。 最好的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

当您准备切换到另一个线程时。让threadstart方法返回。这是优雅地结束线程的最佳方式。 完成后,您可以生成另一个线程。

答案 1 :(得分:0)

没有简单方式来做你想做的事。

不可能以一种保证安全和一致的方式实现“停止你正在做的事情并开始执行这个新方法”,因此.NET线程框架中没有这样的方法。

您需要做什么取决于您的线程的结构,但解决方案通常是轮询某些属性,或者(更好的是,如果它适合代码架构)触发一个事件,该信号指示线程退出(或者,在你的情况下,改为开始执行另一种方法。)