C# webservice ThreadPool类代码
时间: 2024-05-03 14:16:59 浏览: 76
以下是使用C#编写的线程池类代码示例:
```csharp
using System;
using System.Threading;
namespace ThreadPoolExample
{
class Program
{
static void Main(string[] args)
{
// 创建线程池对象
ThreadPoolExample threadPoolExample = new ThreadPoolExample();
// 启动线程池
threadPoolExample.Start();
Console.ReadKey();
}
}
public class ThreadPoolExample
{
private int _numberOfThreads = 4; // 线程池中的线程数
private int _taskCount = 10; // 要执行的任务数
public void Start()
{
// 创建线程池
ThreadPool.SetMaxThreads(_numberOfThreads, _numberOfThreads);
ThreadPool.SetMinThreads(2, 2);
// 创建任务
for (int i = 0; i < _taskCount; i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(ExecuteTask), i);
}
}
private void ExecuteTask(object task)
{
// 模拟任务执行
Console.WriteLine($"Task {task} is executing on thread {Thread.CurrentThread.ManagedThreadId}");
Thread.Sleep(1000);
Console.WriteLine($"Task {task} execution completed on thread {Thread.CurrentThread.ManagedThreadId}");
}
}
}
```
在上面的示例中,我们创建了一个 `ThreadPoolExample` 类,其中包括一个 `Start()` 方法,该方法使用 `ThreadPool` 类来启动线程池并执行任务。
我们在 `Start()` 方法中设置了线程池的最大和最小线程数。然后我们创建了 `_taskCount` 个任务,并将它们添加到线程池中。每个任务都是通过调用 `ThreadPool.QueueUserWorkItem()` 方法来添加的。该方法需要一个 `WaitCallback` 委托,该委托指向要执行的方法。在这里,我们将 `ExecuteTask()` 方法作为要执行的方法。
`ExecuteTask()` 方法是模拟要执行的任务。我们将每个任务的执行延迟 1 秒钟,并在控制台中打印出任务执行的线程 ID。
最后,我们在 `Main()` 方法中实例化了 `ThreadPoolExample` 类并调用了 `Start()` 方法来启动线程池。
阅读全文