有谁知道调用Thread.Abort时无法执行finally语句的原因?我有这样的线程函数:
void ThreadFunc()
{
try
{
int counter = 0;
while (true)
{
Debug.Log ("Waiting" + counter);
Thread.Sleep(100);
++counter;
}
Debug.Log("Success.");
}
catch(ThreadAbortException ex)
{
Debug.LogWarning("Cancelled: " + ex);
}
catch(System.Exception ex)
{
Debug.LogError("Error: " + ex);
}
finally
{
Debug.Log("Finally");
}
}
我使用Thread.Abort终止了该线程。我在输出中看到的只是一堆Waiting,但没有其他行。我的主线程在调用Thread.Abort之后保持运行(即子线程有足够的时间来完成)。Debug.Log函数是线程安全的。
这在Windows上发生。我正在使用Mono(Unity游戏引擎)。在Mac上运行正常。在iOS上,我会遇到这种情况,但这似乎取决于设备/ iOS版本或XCode版本(我还没有弄清楚)。在Windows上,它每次都会发生。
顺便说一句:在iOS上,如果我再尝试一次{} catch {}到finally语句中,则会崩溃。
有人知道为什么会这样吗?它似乎与Thread.Abort和ThreadAbortException的文档所说的完全不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句