C# - 在 XX 秒后停止线程

adr*_*ien 3 c# multithreading

我在 C# 中使用一个线程,我希望它在 40 秒后停止。事实上,我启动它,它运行了 40 秒,然后它应该停止。是否可以使用超时或计时器?

Abd*_*man 5

有两种方法:

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();
}
Run Code Online (Sandbox Code Playgroud)