Я хочу вызвать метод, который выполняет трудоемкую работу из разных потоков.
Public void DoSomeWork(int n)
{
// Time Consuming operation depending on n.
}
1 - я пытаюсь использовать задачу вместо thread & threadpool.
2 - должно быть не более n потоков, работающих параллельно
3 - пока я пытался использовать 'SemaphoreSlim«Я обнаружил, что он вызывает один и тот же поток, вызывая метод несколько раз, и сталкивается с неуправляемым исключением.
Реализация:
for (int i = 0; i < SomeNumberList.Count; i++)
{
semaphore.Wait();
Task.Factory.StartNew(() => DoSomeWork(SomeNumberList[i])).ContinueWith(x => semaphore.Release());
}
Как использовать задачу для вызова DoSomeWork параллельными потоками с помощью задачи и как сделатьобработка ошибок для него?