gpt4 book ai didi

c# - 在启动时设置线程生命周期

转载 作者:太空狗 更新时间:2023-10-29 21:22:41 25 4
gpt4 key购买 nike

有没有一种方法可以设置线程在启动线程时应该(最大)存活多长时间的值?

换个说法,用“伪代码”来说,有没有这样的东西:

Thread t = new Thread();
t.start();
t.abort_after_x_seconds(30);

如果线程存活时间超过 30 秒,这将使线程中止。

编辑:我仍然无法让它工作,我最初拥有的是:

while(true)
{
if(...)
{
Thread t = new Thread(new ThreadStart(startMethod));
t.start();
}
Thread.sleep(...);
}

问题是有时线程会挂起(我没有实现线程的功能所以我不知道为什么(这是一个学校项目,我们在组织方面是菜鸟)),所以我想杀了那些线程。我尝试在下面的示例中使用 Tasks 和 CancellationTokens,但是当 Task 挂起时它无法检查是否已发生取消请求。

最佳答案

  1. 大多数时候,您不应该使用Thread,而应使用Task。它们更方便、更高效。
  2. 中止某些事情并不安全,您应该改用合作取消。如果您正在调用支持取消的方法,则只需向其传递一个将在 30 秒后取消的取消标记。

因此您的代码可能如下所示(使用 .Net 4.5):

var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30)));
var task = Task.Run(() => YourMethod(cts.Token), cts.Token);

关于c# - 在启动时设置线程生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19908473/

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