Хороший способ контролировать несколько потоков - PullRequest
1 голос
/ 20 апреля 2009

У меня есть приложение MDI WinForms, которое может выполнять несколько задач. Каждая задача выполняется как backgroundWorker.

Каков хороший подход к управлению запущенными потоками:

  • проверить, работает ли конкретный поток
  • остановить конкретную тему?

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

Может быть, мне нужен отдельный класс, где я могу хранить переменную isTaskRunning?

Как хороший способ сделать это?

ТИА

1 Ответ

1 голос
/ 20 апреля 2009

Один из подходов, который вы могли бы использовать, - создать класс для каждой задачи. Затем пусть этот класс выполняет задачи. Он будет знать, можно ли использовать несколько задач одновременно, и ограничит доступ к каждой из них. Отсюда:

public class LongUploadTask
{
  private bool isRunning;


  public void Execute()
  {
    if(!isRunning)
    {
       //etc...
    }
  }
}

Обратите внимание, я пропустил код блокировки, если вы обращаетесь к нему из нескольких потоков, что я не думаю, что вы. Кроме того, если вы хотите выполнить это асинхронно, вы можете использовать асинхронные делегаты и события ручного сброса для достижения того, что делает ваш BackgroundWorker's.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...