【发布时间】:2011-02-23 09:47:03
【问题描述】:
如果一个线程正在运行一个函数 func1,该函数在其中调用另一个函数 func2...
然后我调用了 thread.Abort()
这会停止func1吗
或func1 和func2 以及func1 调用的所有函数??
谢谢
编辑:这里有更多细节:
func1 在新线程中被调用,它会定期连续调用func2...func2 只有在某个数组不为空时才开始做一些工作.. 它完成并返回
当supervisor想要保存数据时,它会中止func1-的线程,然后使数组为空,保存数据,然后用新的数组填充数组..并再次以func1启动线程..
有时会引发异常,因为 func2.. 中的数组为空,所以 func1 中止不会影响 func2
【问题讨论】:
-
当你写了一个测试程序并尝试了它时,发生了什么? ;)
-
我惊奇地发现有时候func2没有停止!!
-
您的测试程序是否足够简单,您可以将其发布在这里,以便我们尝试运行它?如果不是,您能否尝试将其简化为最简单的代码来演示您所见证的行为。
-
我刚刚重新阅读了您的问题。我认为您假设当
Thread.Abort返回时,这意味着线程已经停止。这不是真的 - 线程停止之前可能需要一些时间(或者它可能永远不会停止)。如果您想确保线程已停止,您需要与其同步,例如通过调用Thread.Join。
标签: c# multithreading abort