gpt4 book ai didi

c# - 如果未返回,则在间隔后终止线程

转载 作者:可可西里 更新时间:2023-11-01 08:06:19 24 4
gpt4 key购买 nike

我有一个线程可以从网络或串行端口获取一些数据。如果在 5 秒内没有收到数据,线程必须终止(或返回 false)。

换句话说,如果线程运行时间超过 5 秒,它必须停止。

我正在用 C# 编写,但任何 .NET 语言都可以。

最佳答案

有两种方法:

1。封装超时

从网络或串口读取数据的线程可以测量从它开始时起耗时,等待数据的时间不超过剩余时间。网络通信 API 通常提供为操作指定超时的方法。因此,通过执行简单的 DateTime 算法,您可以将超时管理封装在工作线程中。

2。外部超时

使用另一个线程(或者如果可行的话在主线程中执行)等待工作线程在特定时间限制内完成,如果没有,则中止它。像这样:

// start the worker thread
...

// give it no more than 5 seconds to execute
if (!workerThread.Join(new TimeSpan(0, 0, 5)))
{
workerThread.Abort();
}

建议:我会坚持使用第一种解决方案,因为它会带来更简洁和可维护的设计。但是,在某些情况下,可能有必要提供“硬”中止此类工作线程的方法。

关于c# - 如果未返回,则在间隔后终止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4501838/

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