C # WinForms Thread Manager - PullRequest
       4

C # WinForms Thread Manager

0 голосов
/ 21 апреля 2019

Я хочу построить менеджер потоков в моем приложении C# WinForms.

Вот как я могу добавить новую тему:

Thread thread = new Thread(delegate()
{
    Thread.Sleep(TimeSpan.FromSeconds(delay));

    //MY CODE

    RemoveCurrentThread();
});
threadArr.Add(thread);
thread.Start();

Вот как я удалю тему:

public void RemoveCurrentThread()
{
    if (threadArr.Contains(Thread.CurrentThread))
    {
        threadArr.Remove(Thread.CurrentThread);
    }
}

И иногда я хочу отменить весь запущенный поток, поэтому я использую:

public void CancelAllThreads()
{
    if (threadArr.Count == 0)
        return;

    foreach (Thread item in threadArr)
    {
        if (item.IsAlive)
            item.Abort();
    }

    threadArr.Clear();
}

Проблема с этим кодом состоит в том, что все потоки создаются, а затем начинают ждать окончания задержки (у меня много потоков в приложении, и я боюсь, что это отнимает много процессора у компьютера) , Есть ли какой-нибудь встроенный код для запуска потока через пару секунд?

Спасибо!

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