1
请考虑使用.Net 2003 Framework的以下代码。将处理一个具有线程启动的线程的对象,无需调用Thread.Abort()
' This gets initialized in New() perhaps...
Private someObject As SomeClass
Public Sub startThread()
Dim t As New System.Threading.Thread(AddressOf someObject.someSub)
t.Start()
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
someObject.Dispose()
End Sub
请问someObject.Dispose()是否有效地去掉了需要调用t.Abort()
?
这就要看在这个对象中实现'Dispose'方法,它不是“自动的”或任何东西,当然这可能会导致麻烦 – Luaan 2014-09-05 14:44:02
听起来像是答案。谢谢! – bitsoflogic 2014-09-05 14:46:00
我不确定运行时的* exact *行为如果你在一个被引用的方法在另一个线程中运行的时候抛弃了一个对象,那么我的* guess *就是这个线程会抛出一个异常,这会导致异常终止,但是,它不是一个记录过程。另外,直接调用Abort并不是一个好主意,因为行为可能是不稳定的,也不是保证。 – James 2014-09-05 14:50:06