gpt4 book ai didi

c# - 到 CurrentThread.Abort 或不到 CurrentThread.Abort

转载 作者:可可西里 更新时间:2023-11-01 07:57:57 28 4
gpt4 key购买 nike

我见过许多具有如下所示的线程过程的示例。

    private void ThreadProc()
{
while (serviceStarted)
{
// do some work

Thread.Sleep(new TimeSpan(0, 0, 5));
}

Thread.CurrentThread.Abort();
}

Abort() 最后真的有必要吗?

反对调用 Abort() 的论据很多

  1. 一旦程序退出 - 预计它已经自行清理。
  2. 调用 Abort() 会抛出一个异常,这通常比仅退出一个过程更耗费资源。

我想阅读解释为什么这是或不是一个好的做法。

最佳答案

调用 Thread.Abort() 确实会引发异常,如果您正在编写将被重用的代码(或基础库的一部分),其他开发人员将很难处理 ThreadAbortExcpetion

在这篇关于Reliability Best Practices的文章中有解释.

我一直听说调用 Thread.Join()如果您可以等到线程完成处理,这是一种更好的方法。

我不知道是否有人认为这是一个好的做法。它可能会导致死锁(因为当您抛出异常时未正确清理非托管资源)

这是 another article about it ,以及其他处理问题的方法。

关于c# - 到 CurrentThread.Abort 或不到 CurrentThread.Abort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/321779/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com