У меня есть консольное приложение в c #, которое работает бесконечно и выглядит примерно так:
class Program
{
static void Main(string[] args)
{
while(true)
{
var listOfIds = GetItemIds();
Parallel.ForEach(listOfIds, new Parallel{ MaxDegreeOfParallelism = 15}, th => DoWork(th));
Console.WriteLine("Iteration Complete");
}
}
static void DoWork(int id)
{
//do some work and save data
//...
}
static List<int> GetItemIds()
{
//return a list of ints.
}
}
Пока поток находится в «DoWork», он обрабатывает данные, модифицирует их и сохраняет.Приложение ждет, пока все не завершится, и затем снова начинает новую итерацию.
Теперь, если консольное приложение закрыто, кажется, что потоки не заканчивают свою работу и умирают с консольным приложением.Я думал, что потоки, созданные с помощью 'Parallel', не зависят от основного потока.Есть ли способ заставить потоки завершить свою работу, даже если я выйду из консольного приложения?я должен использовать что-то другое, а не 'Parallel' для создания потоков?