手动定时C#线程

Joe*_*nez 2 c# multithreading timeout

我需要为长时间运行的线程添加超时.我们遇到了一些外部问题,这些问题有时会导致该线程无限期地挂在某一行代码上.为了使我们的进程更健壮,我们希望检测到线程不再主动运行/轮询并中止线程.这将让我们清理资源并重新启动线程.

添加此功能的首选方法是什么?

Eri*_*ert 6

首选方法是在其自己的进程中运行不可靠的子系统,而不是自己的线程.这样,当它表现得很糟糕时,你可以破坏整个过程并让操作系统清理它留下的任何可怕的混乱.杀死在您的进程中运行不可靠代码的线程可能会对您的代码产生各种令人讨厌的副作用,因为操作系统无法知道哪些资源属于不良行为的线程以及您仍在使用哪些资源.

简而言之:不要与无法控制的代码共享流程.