c# - 如何使用 BeginInvoke C#

标签 c# begininvoke

你能帮我解释一下吗:

someformobj.BeginInvoke((Action)(() =>
{
    someformobj.listBox1.SelectedIndex = 0;
}));

你能告诉我如何使用 begininvoke 吗? 什么是 Action 类型? 为什么有空白括号 ()=> 是什么意思?

最佳答案

Action是 .NET 框架提供的一种委托(delegate)类型。 Action 指向一个没有参数且不返回值的方法。

() =>lambda expression句法。 Lambda 表达式不是 Delegate 类型。 Invoke 需要 Delegate,因此 Action 可用于包装 lambda 表达式并向 Invoke() 提供预期的 Type

Invoke 导致所述 Action 在创建控件窗口句柄的线程上执行。经常需要更改线程以避免异常。例如,如果在需要 Invoke 时尝试在 RichTextBox 上设置 Rtf 属性,而不先调用 Invoke,则 跨线程操作无效 将抛出异常。在调用 Invoke 之前检查 Control.InvokeRequired

BeginInvokeInvoke 的异步版本。异步意味着线程不会阻塞调用者,这与阻塞的同步调用相反。

关于c# - 如何使用 BeginInvoke C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14388136/

相关文章:

C# 通用接口(interface)和工厂模式

c# - 如何保持连续流 - Tweetinvi

c# - 有没有更好的方法将二维数组写入二进制文件?

c# - 比较标志枚举的更好方法是什么?

c# - Invoke() 和 BeginInvoke() 有什么区别

c# - 通过 C# 呈现包含数据的表格的动态 html 的意外行为

.net - BeginInvoke 使用/不使用 MethodInvoker — 有什么不同吗?

c# - 套接字编程 : Can asynchronous methods of send and read ensure the order of data?

c# - 如何创建调度程序或将对象与调度程序关联到 BeginInvoke 调用

c# - Dispatcher.Begin调用正确的用法?