C# 线程与委托
时间: 2023-07-27 16:10:29 浏览: 97
C# 中的线程和委托是两个重要的概念,它们在多线程编程中起到了重要的作用。
线程是操作系统中独立的执行单元,它可以执行一个或多个方法,并且可以并发地运行。在 C# 中,可以使用 Thread 类来创建和管理线程。Thread 类提供了许多方法和属性,例如 Start 方法用于启动线程,Join 方法用于等待线程执行完成,IsAlive 属性用于判断线程是否处于活动状态等等。
委托是 C# 中的一个重要的概念,它可以用来封装一个或多个方法,并且可以作为参数传递给其他方法。委托可以用来实现事件和回调函数等功能。在 C# 中,使用 delegate 关键字来定义委托类型,例如:
```
public delegate void MyDelegate(int x, int y);
```
上面的代码定义了一个名为 MyDelegate 的委托类型,它可以接受两个整数参数并且不返回任何值。可以使用委托类型来封装一个方法,例如:
```
public void MyMethod(int x, int y)
{
Console.WriteLine(x + y);
}
MyDelegate del = new MyDelegate(MyMethod);
```
上面的代码将 MyMethod 方法封装到一个名为 del 的委托实例中。可以使用 del.Invoke() 方法来调用委托实例中封装的方法。
在多线程编程中,可以使用委托来实现在线程中执行方法的功能,例如:
```
public void MyThreadMethod(MyDelegate del)
{
del.Invoke(1, 2);
}
MyDelegate del = new MyDelegate(MyMethod);
Thread thread = new Thread(() => MyThreadMethod(del));
thread.Start();
```
上面的代码创建了一个新的线程,并且在线程中执行了 MyThreadMethod 方法。MyThreadMethod 方法接受一个 MyDelegate 委托类型的参数,并且调用了该委托实例中封装的方法。在上面的代码中,将 MyMethod 方法封装到了 del 委托实例中,并且将该委托实例作为参数传递给了 MyThreadMethod 方法。因此,在新的线程中,将会执行 MyMethod 方法,并且输出 3。
阅读全文