c#线程池模拟10个任务的执行
时间: 2023-07-04 19:26:50 浏览: 55
以下是一个模拟使用线程池执行10个任务的示例代码:
```csharp
using System;
using System.Threading;
class Program
{
static void Main(string[] args)
{
// 循环添加10个任务到线程池中
for (int i = 1; i <= 10; i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork), $"Task {i}");
}
// 等待所有任务完成
Console.WriteLine("Waiting for all tasks to complete...");
while (ThreadPool.PendingWorkItemCount > 0)
{
Thread.Sleep(100);
}
Console.WriteLine("All tasks are complete.");
}
static void DoWork(object data)
{
// 获取任务数据
string taskName = (string)data;
Console.WriteLine("Task {0} is starting.", taskName);
// 模拟任务执行
Thread.Sleep(1000);
Console.WriteLine("Task {0} is complete.", taskName);
}
}
```
输出结果:
```
Task 1 is starting.
Task 2 is starting.
Task 3 is starting.
Task 4 is starting.
Task 5 is starting.
Task 6 is starting.
Task 7 is starting.
Task 8 is starting.
Task 9 is starting.
Task 10 is starting.
Waiting for all tasks to complete...
Task 1 is complete.
Task 5 is complete.
Task 3 is complete.
Task 2 is complete.
Task 4 is complete.
Task 6 is complete.
Task 7 is complete.
Task 8 is complete.
Task 9 is complete.
Task 10 is complete.
All tasks are complete.
```
在这个示例代码中,我们使用循环向线程池中添加10个任务,然后使用 ThreadPool.PendingWorkItemCount 属性来检查是否还有未完成的任务。在任务执行的过程中也输出了一些信息。最后当所有任务完成时,程序会输出一条信息表示所有任务已经完成。