C# INVOKE
时间: 2024-08-21 15:00:27 浏览: 64
C#窗体中Invoke和BeginInvoke方法详解
C# 中的 `Invoke` 或 `BeginInvoke` 是用于操作 GUI 控件的方法,特别是当在非 UI 线程上执行可能导致界面更新的操作时。这两个方法允许你在主线程(UI 协程)中同步或异步地更新控件的状态。
- `Invoke` 是用于在当前线程的消息循环中同步调用某个委托的方法。如果该方法是在 UI 线程上执行的,它会立即执行;如果在其他线程,它会将调用推迟到 UI 主线程,确保控件更新的顺序正确。
```csharp
button.Invoke(new Action(() => button.Text = "New Text"));
```
- `BeginInvoke` 则是一个异步版本,返回一个 `IAsyncResult` 对象。你可以通过这个对象查询操作是否完成,或者获取结果(对于有返回值的函数)。它的使用通常配合 `EndInvoke` 函数一起。
```csharp
IAsyncResult result = button.BeginInvoke(new Action(() => button.Text = "New Text"), null);
// ...在其他地方处理结果或等待任务完成
button.EndInvoke(result);
```
阅读全文