C# Thread用法
时间: 2024-09-27 13:17:02 浏览: 41
c#线程Thread示例
在C#中,`Thread` 类用于创建和管理线程。它可以让你的应用程序同时执行多个操作,提高其并发性能。以下是`Thread` 类的一些基本用法:
1. 创建新线程:
```csharp
Thread newThread = new Thread(new ThreadStart(ThreadMethod));
newThread.Start(); // 启动线程
```
在这里,`ThreadStart` 是一个委托类型,它接受一个无参的 `void` 函数作为参数。
2. 传递参数:
```csharp
ThreadStart startMethod = new ThreadStart(MyMethodWithParameter, "threadArgument");
newThread = new Thread(startMethod);
newThread.Start();
private void MyMethodWithParameter(string argument)
{
Console.WriteLine("Received argument: " + argument);
}
```
3. 线程同步(加入等待队列):
```csharp
lock (myObject) // 使用锁保证线程安全
{
// 执行共享资源操作
Monitor.Wait(myObject); // 线程进入等待状态
Monitor.Pulse(myObject); // 当满足条件时唤醒线程
}
```
4. 设置线程优先级:
```csharp
ThreadPriority priority = ThreadPriority.Normal;
newThread.Priority = priority;
```
5. 终止线程:
```csharp
if (newThread.IsAlive)
{
newThread.Abort(); // 异常中断线程
// 或者使用 WaitHandle 来更优雅地终止
ManualResetEvent exitSignal = new ManualResetEvent(false);
newThread.Join(exitSignal.WaitOne(Timeout.Infinite)); // 等待线程结束
}
```
注意,直接使用 `Abort()` 可能导致数据丢失或异常情况,一般推荐通过中断标志 (`ThreadInterruptedException`) 或异步中断信号 (`CancellationTokenSource`) 更安全地控制线程。
阅读全文