Windows 调用Thread.Abort时不执行finally

Windows 调用Thread.Abort时不执行finally,windows,multithreading,mono,abort,threadabortexception,Windows,Multithreading,Mono,Abort,Threadabortexception,有人知道调用Thread.Abort时finally语句不能执行的原因吗?我有如下线程函数: void ThreadFunc() { try { int counter = 0; while (true) { Debug.Log ("Waiting" + counter); Thread.Sleep(100); ++counter; }

有人知道调用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终止此线程。我在输出中看到的只是一堆等待,但没有其他行。我的主线程在调用thread.Abort后继续运行(即子线程有足够的时间完成)。日志函数是线程安全的

这在Windows上发生。我正在使用Mono(Unity游戏引擎)。在Mac上,它工作正常。在iOS上,我有这种行为,但它似乎取决于设备/iOS版本或XCode版本(我还没有弄清楚)。在Windows上,这种情况每次都会发生

顺便说一句:在iOS上,如果我在finally语句中放入另一个try{}catch{},它就会崩溃

有人知道为什么会这样吗?它似乎与Thread.Abort和ThreadAbortException的文档中所说的完全不同。

Mono不支持也不完全支持调用Thread.Abort时的catch/finally

关于这一点,有一个很好的解释