0

スレッドを停止して再開する方法を知りたいです。

データベースから返された条件に応じて、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);
}
4

1 に答える 1

1

独自のリスナーを作成し、その中でそのスレッドを管理できます。

何かのようなもの:

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;
        }
    }
}
于 2013-10-11T07:35:40.483 に答える