c# - 如何调用Action<>修改winforms控件

标签 c# delegates

我有以下功能

    private void UnsubscribeSubscribe(Action action)
    {
        action.BeginInvoke(action.EndInvoke, null);
    }

每当我传入一个修改我的控件数据源的操作时,什么都不会发生。我知道正在调用该操作,因为我正在运行的查询正在返回结果。我在读到您只能从添加它们的同一线程中修改 winform 控件。我怎样才能使这项工作?

例如,运行
UnsubscribeSubscribe(() => { Foobar.DataSource = GetResults() });
GetResults()将正常运行,但数据源将保持不变。

最佳答案

您需要在创建控件底层句柄的线程上调用委托(delegate)。 Control.BeginInvoke仅用于此目的。

关于c# - 如何调用Action<>修改winforms控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5476918/

相关文章:

ios - 哪个类用于实现 GKLocalPlayerListener 协议(protocol)

c# - 是否可以使用反射连接匿名委托(delegate)?

执行给定方法的 C# 方法

c# - SQL Azure 上临时表的 SqlBulkCopy 替代方案

c# - 在移动应用程序中使用 Google 进行图像搜索

c# - 如何在 c# 中为 mysql 处理空日期而不将它们转换为空

ios - 为什么即使我完成了所有必要的步骤,我的代理人也没有工作?

c# - 如何在 C# 中分配委托(delegate)扩展方法?

c# - 控件位于不同 Canvas /图层时的 Silverlight 碰撞检测

c# - 使用 NPOI 库将 Excel 工作表单元格的格式从常规设置为数字