停止特定线程并从 Windows 服务重新启动它
本文关键字:Windows 服务 重新启动 线程 | 更新日期: 2023-09-27 18:34:56
我想知道如何停止和重新启动线程。
我创建 N 个线程,具体取决于从数据库返回的条件。这些是长时间运行的进程,永远不会停止,但是如果我在线程中遇到严重错误,我想完全杀死线程并像新的一样启动它。
我目前用来启动线程的代码:
foreach (MobileAccounts MobileAccount in ReceiverAccounts)
{
Receiver rec = new Receiver();
ThreadStart starterParameters = delegate { rec.StartListener(MobileAccount); };
Thread FeedbackThread = new Thread(starterParameters);
FeedbackThread.Name = MobileAccount.FriendlyName;
FeedbackThread.Start();
Thread.Sleep(1000);
}
您可以编写自己的侦听器并在其中管理其线程。
像这样:
public class AccountListener
{
private Thread _worker = null;
private MobileAccount _mobileAccount;
public AccountListener(MobileAccount mobileAccount)
{
_mobileAccount = mobileAccount;
}
protected void Listen()
{
try
{
DoWork();
}
catch (Exception exc)
{
}
}
protected virtual void DoWork()
{
Console.WriteLine(_mobileAccount);
}
public void Start()
{
if (_worker == null)
{
_worker = new Thread(Listen);
}
_worker.Start();
}
public void Stop()
{
try
{
_worker.Abort();
}
catch (Exception)
{
//thrad abort exception
}
finally
{
_worker = null;
}
}
}