C# 控制工作线程超时。Windows服务

C# 控制工作线程超时。Windows服务,c#,.net,multithreading,C#,.net,Multithreading,假设您需要从远程服务器获取数据工作线程每30分钟启动一次,检索N个数据分区 private Int32 timeout = 60000*30; public void Start() { this.workerThread = new Thread(this.ImportDocuments); this.finishedEvent = new AutoResetEvent(false); this.workerThread.Start(); } // ... whi

假设您需要从远程服务器获取数据<代码>工作线程每30分钟启动一次,检索
N个数据分区

private Int32 timeout = 60000*30;

public void Start() {
    this.workerThread = new Thread(this.ImportDocuments);
    this.finishedEvent = new AutoResetEvent(false);
    this.workerThread.Start();
}

// ...

while(!this.finishedEvent.WaitOne(timeout)) {
    // fetch/analyze/process data
}

当配额被严格定义时,比如说每次调用
150个文档
,我真的应该使用
超时时间
?工作线程是否会在未定义任何超时的情况下再次启动?

在未定义超时的情况下等待AutoResetEvent,可能会导致无限等待;它使工作线程依赖于外部效果,因此易受攻击

这就是为什么我总体上赞成使用暂停


如果没有超时,只需执行
while(true)
(或类似操作),工作线程将持续旋转。因此,它不会再次启动,而是循环。

当150个文档的获取/分析/处理步骤耗时超过30分钟时,您在寻找什么行为?顺便说一句:工作线程永远不会“再次启动”,它会循环。