停止特定线程并从 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);
}

停止特定线程并从 Windows 服务重新启动它

您可以编写自己的侦听器并在其中管理其线程。

像这样:

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;
        }
    }
}