C# 线程通信 回调函数
时间: 2023-09-13 20:11:19 浏览: 117
在 C# 中,线程间通信可以使用回调函数来实现。回调函数是一种将方法作为参数传递给其他方法的技术。以下是一个使用回调函数实现线程通信的示例:
```csharp
using System;
using System.Threading;
class Program
{
static void Main(string[] args)
{
Worker worker = new Worker();
worker.Start();
// 等待用户输入任意键停止工作线程
Console.ReadKey();
worker.Stop();
}
}
class Worker
{
private Thread thread;
private bool isRunning;
public void Start()
{
isRunning = true;
thread = new Thread(DoWork);
thread.Start();
}
public void Stop()
{
isRunning = false;
thread.Join();
}
private void DoWork()
{
while (isRunning)
{
// 执行工作任务
// 当完成工作后,调用回调函数通知主线程
CallbackFunction();
}
}
private void CallbackFunction()
{
// 在这里执行回调操作,例如更新UI、处理结果等
Console.WriteLine("工作线程完成任务,回调函数被调用");
}
}
```
在上面的示例中,`Worker` 类表示一个工作线程,`Start` 方法启动工作线程,`Stop` 方法停止工作线程。`DoWork` 方法是工作线程的主函数,在这个方法中执行具体的工作任务。当工作任务完成后,通过调用 `CallbackFunction` 方法来执行回调操作。
在 `CallbackFunction` 方法中,你可以在其中执行需要在主线程中进行的操作,比如更新用户界面或处理工作结果。
请注意,此示例中的回调函数是在同一线程中执行的。如果需要在不同线程中执行回调函数,你可能需要使用 `Dispatcher` 或其他线程间通信机制来确保正确的线程调度。
阅读全文