У меня есть простой код, который выглядит следующим образом: C#:
using System;
using System.Threading;
using System.Diagnostics;
namespace ThreadPooling
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter the number of calculations to be made:");
int calculations= Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Thread Pool Execution");
for (int i = 1; i <= calculations; i++)
{
Console.WriteLine("Staring process " + i + "...");
ThreadPool.QueueUserWorkItem(new WaitCallback(Process(i)));
}
Console.WriteLine("All calculations done.");
Console.WriteLine("\nPress any key to exit the program...");
Console.ReadKey();
}
static void Process(object callback, int name)
{
for (int i = 0; i <= 10; i++)
{
Console.WriteLine(i + " is the current number in " + name);
}
}
}
}
Я хочу, чтобы main
мог вызывать Process
с Пулом потоков и аргументом. Затем я хочу, чтобы программа дожидалась завершения всех потоков sh, прежде чем сообщить пользователю, что это сделано. Как мне сделать оба? Кажется, я не могу поместить аргумент в Process, я получаю: Error CS7036 There is no argument given that corresponds to the required formal parameter 'name' of 'Program.Process(object, int)'
И мне не ясно, как C# ждать, пока все процессы с l oop до fini sh прежде чем он скажет пользователю, что это сделано.