c# - 如何从另一个类更新 Windows 窗体 GUI?

标签 c# winforms multithreading

如何从创建 GUI 但不在创建线程中的另一个类更新 win 表单控件(例如标签、进度条)? (例如,Program.cs 的事件处理程序)

我找到了几篇关于使用 Invoke() 方法从另一个线程更新 GUI 的帖子,但到目前为止我发现的内容只有在代码与表单编写在同一类中时才有效

http://www.yoda.arachsys.com/csharp/threads/winforms.shtml

最佳答案

您需要在表单上调用Invoke 方法。例如:

private void someMethod() {
    myOtherForm.Invoke(new MethodInvoker(delegate() {
        // update things in myOtherForm here
    }));
}

如果您不需要在返回方法之前完成更新,您应该使用 BeginInvoke 而不是 Invoke

关于c# - 如何从另一个类更新 Windows 窗体 GUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3226293/

相关文章:

c# - C#中通过TFS API修改Build过程参数

c# - 如何在 WPF 中使用 TabControl 在不同选项卡上添加按钮

multithreading - 基本互斥锁和原子整数哪个更有效?

c# - 如何在 VS 中进行单元测试?

c# - 使用来自 WCF 客户端的非 wcf SOAP 错误(已定义 soap 错误)

c# - 在 RichTextBox 中用空格链接到文件的路径?

c# - CellContentClick 事件并不总是有效

c# - 影响 ListView header 的 Windows 主题

当线程具有相同优先级时,对 SCHED_FIFO 策略的 theads 调度感到困惑

python - python线程中的信号中断