C# Программное создание потоков

124
28 августа 2019, 13:00

Как создать определенное количество потоков при помощи кода? Пробовал так, но программа зависает и работает медленнее, чем если объявлять потоки вручную.

   var threads = new List<Thread>();
            for (int i = 1; i <= 20; i++)
            {
                threads.Add(new Thread(() => Parsing(url,abc+Abc)));
i++;
            }
            threads.ForEach(t => t.Start());
            threads.ForEach(t => t.Join());
        }
Answer 1

программа зависает

Метод Join блокирует основной поток программы до того момента, когда работа дочернего потока будет завершена.

Если Вам не требуется в обязательном порядке дождаться завершения работы дочерних потоков, не используйте его.

Answer 2

Можно так.

public async Task StartTasks()
{
    List<Task> tasks = new List<Task>();
    for (int i = 0; i < someNumber; i++)
    {
        Task t = Task.Factory.StartNew(() =>
        {
            //code
        });
        tasks.Add(t);
        //что-бы не зависло
        Task.Delay(5).Wait();
    }
    await Task.WhenAll(tasks);
}
READ ALSO
Поиск скрытого компонента (Visible = false)

Поиск скрытого компонента (Visible = false)

После InitializeComponent(); скрываю пункты MenuStripДелаю это следующим образом:

97
Нужен простой конвертер byte[] to Image WPF

Нужен простой конвертер byte[] to Image WPF

Есть бд MSSQL в ней таблица в которой в поле Logo типа Image хранятся изображения формата jpeg(да, я знаю что так делать не есть хорошо но у меня такое...

107
WPF + ссылка на сайт кнопкой

WPF + ссылка на сайт кнопкой

Столкнулся с проблемой в создании ссылки на определенный сайт с помощью кнопки в WPF, можно ли вообще её как-нибудь сделать, или нет? Если можно,...

129
Отправляемые данные ajax post запросом

Отправляемые данные ajax post запросом

Есть модельС формы отправляется ajax запросом несколько полей с такими же названиями как и у свойств модели

119