c# - GUI 对象何时需要调用?

标签 c# multithreading user-interface invoke begininvoke

使用 C# Windows.Forms,方法 Invalidate()、Refresh() 等是否必须在主/GUI 线程上运行(需要 Invoke/BeginInvoke)?如何更改 GUI 对象的成员,例如在 Charting.Chart 对象中添加/删除点或更改系列的颜色?

我在工作线程中发生了其中一些更改,没有任何问题(所以我猜它们没问题?),但我试图区分哪些更改是 GUI 线程上明确需要的,哪些更改可以发生在工作线程中的对象。有没有人有关于此主题的指南的链接或书籍引用?

最佳答案

一般来说,您通常应该假设对 GUI 元素的所有更改都应该在 UI 线程上进行。

通常,后台线程上的更改会在测试期间起作用,但会在部署后中断。一般来说,除非另有说明,否则假设一切都应该在 UI 线程上会更安全。

关于c# - GUI 对象何时需要调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554981/

相关文章:

c# - Json.net序列化特定的私有(private)字段

java - 为什么两个 Java 线程(在某些情况下)比一个线程快两倍以上?

css - 是什么让平面 ui 模板中的登录表单具有特定宽度

java - 从 jtextfield 中删除最后一个字符

java - 如何在自己的线程中启动 JavaFX GUI

c# - ThreadPool 给出了惊人的结果,我这样做对吗? (不,我没有)

c# - 将时间字符串解析为十进制?

c# - 检查字符串是否为 `moSTLy` 大写的快速方法

multithreading - 为什么每次与互斥锁同步时都会发生线程上下文切换?

c++ - QThread Char数组在两个线程之间传递后被销毁