Многопоточность не работает в Windows Service C#

#c# #.net #multithreading #windows-services

#c# #.net #многопоточность #windows-services

Вопрос:

У меня есть служба Windows (созданная с использованием C #), которая запускает фрагмент кода каждые 10 минут,

  • в котором я создаю массив потоков и пытаюсь выполнить один единственный метод. и каждый поток должен выполнять свою работу отдельно.

Но, когда я устанавливаю службу и запускаю службу, через некоторое время она автоматически останавливается.

После проверки в средстве просмотра событий я нахожу в журнале сообщение: «Служба MyService неожиданно завершилась. Это было сделано 1 раз (ы).»

Код:

 Thread threadarrArray = new Thread[10];

for (int i = 0; i < 10; i  )
{
   threadarrArray[i] = new Thread(() => Mthd_StartThreadSync());

   threadarrArray[i].Start();
}

private void Mthd_StartThreadSync()
{
   // some code
}
 

Пожалуйста, помогите.

Комментарии:

1. Вы случайно не используете фреймворк Topshelf?

2. Нет, я использую . Только Net framework

3. Покажите нам OnStart метод вашего сервиса

4. Timer timer = new Timer(); timer.Elapsed = new ElapsedEventHandler(OnElapsedTime); timer.Interval = 600000; timer.Enabled = true; private void OnElapsedTime(object sender, ElapsedEventArgs e) { // above threading code mentioned in question }

5. Не объявляйте timer локально внутри OnStart . Сохраните ссылку в поле элемента.