调用Thread.Abort时最终不执行

保利乌斯·莱基斯(Paulius Liekis)

有谁知道调用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的文档所说的完全不同。

谢尔盖·朱可夫(Sergey Zhukov)

Mono不支持约束执行区域,并且在调用Thread.Abort时不完全支持catch / finally。

关于此有一个错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

调用Thread.Abort时最终不执行

来自分类Dev

这是调用Thread.Abort()的合适地方吗?

来自分类Dev

将处置一个在其方法上启动了线程的对象时,无需调用Thread.Abort()

来自分类Dev

的Thread.join()由ExecutorService的执行线程时不工作

来自分类Dev

java - 在 EDT 线程中调用 Thread.sleep() 时 SwingWorker 不运行

来自分类Dev

当我调用pushViewController时不执行任何操作

来自分类Dev

用户未登录时不执行调用命令

来自分类Dev

调用thread.isInterrupted并打印结果时的不同行为

来自分类Dev

使用ExecutorService时不调用Thread.interrupt

来自分类Dev

调用thread.join()时如何通知锁

来自分类Dev

NET运行时是否曾经调用过Thread.Abort()?

来自分类Dev

线程开始执行后,C ++ std :: thread可调用对象的对象指针可以无效吗?

来自分类Dev

在全局var析构函数中调用时thread.join不返回

来自分类Dev

调用了异步回调,但有时不执行

来自分类Dev

为什么在路由中调用我的Passport身份验证功能时不执行?

来自分类Dev

将结果添加到列表时,为什么不执行方法调用?

来自分类Dev

通过Web服务器调用函数时为什么不执行函数?

来自分类Dev

在MainActivity外部调用wifi.startScan()时不执行wifi扫描

来自分类Dev

调用了异步回调,但有时不执行

来自分类Dev

为什么从“空”主调用方法时不执行打印语句

来自分类Dev

VBA 代码在调用 Shell 时不执行 FTP 下载或写入日志

来自分类Dev

为什么在成员函数上调用std :: thread时需要“ this”?

来自分类Dev

在新Thread()中创建控件时,在正确的线程上调用方法

来自分类Dev

调用“ enqueue_work”时出现问题-vorbrodt thread_pool

来自分类Dev

在调用事件时使用Thread.Sleep,但不起作用吗?(C#)

来自分类Dev

在从 STAThread 实例调用的类上创建 Thread 时,单元状态是什么?

来自分类Dev

调用Thread.wait()

来自分类Dev

发送前不执行javascript ajax调用

来自分类Dev

发送前不执行javascript ajax调用

Related 相关文章

  1. 1

    调用Thread.Abort时最终不执行

  2. 2

    这是调用Thread.Abort()的合适地方吗?

  3. 3

    将处置一个在其方法上启动了线程的对象时,无需调用Thread.Abort()

  4. 4

    的Thread.join()由ExecutorService的执行线程时不工作

  5. 5

    java - 在 EDT 线程中调用 Thread.sleep() 时 SwingWorker 不运行

  6. 6

    当我调用pushViewController时不执行任何操作

  7. 7

    用户未登录时不执行调用命令

  8. 8

    调用thread.isInterrupted并打印结果时的不同行为

  9. 9

    使用ExecutorService时不调用Thread.interrupt

  10. 10

    调用thread.join()时如何通知锁

  11. 11

    NET运行时是否曾经调用过Thread.Abort()?

  12. 12

    线程开始执行后,C ++ std :: thread可调用对象的对象指针可以无效吗?

  13. 13

    在全局var析构函数中调用时thread.join不返回

  14. 14

    调用了异步回调,但有时不执行

  15. 15

    为什么在路由中调用我的Passport身份验证功能时不执行?

  16. 16

    将结果添加到列表时,为什么不执行方法调用?

  17. 17

    通过Web服务器调用函数时为什么不执行函数?

  18. 18

    在MainActivity外部调用wifi.startScan()时不执行wifi扫描

  19. 19

    调用了异步回调,但有时不执行

  20. 20

    为什么从“空”主调用方法时不执行打印语句

  21. 21

    VBA 代码在调用 Shell 时不执行 FTP 下载或写入日志

  22. 22

    为什么在成员函数上调用std :: thread时需要“ this”?

  23. 23

    在新Thread()中创建控件时,在正确的线程上调用方法

  24. 24

    调用“ enqueue_work”时出现问题-vorbrodt thread_pool

  25. 25

    在调用事件时使用Thread.Sleep,但不起作用吗?(C#)

  26. 26

    在从 STAThread 实例调用的类上创建 Thread 时,单元状态是什么?

  27. 27

    调用Thread.wait()

  28. 28

    发送前不执行javascript ajax调用

  29. 29

    发送前不执行javascript ajax调用

热门标签

归档