2013-10-11 2 views
0

Я хочу знать, как остановить и перезапустить поток.Остановить конкретную тему и снова запустить ее с Windows Service

Я создаю 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); 
} 

ответ

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

Вы привели меня к ответу, я искал. Итак, вы получаете очки – BossRoss

Смежные вопросы