【发布时间】:2016-01-07 10:19:04
【问题描述】:
您好,我正在寻找一些关于 c# 编码的基本信息,尤其是 WPF。
首先我真的不明白,什么时候必须使用 Invoke 更新 WPF 中的表单组件,什么时候不需要。
例如,如果您有一个简单的按钮单击事件,您通常会在其中执行以下操作:
this.label1.content = this.dataObject.Position;
但是,例如,如果您轮询大量数据,您通常会调用标签 1。
我不明白什么时候必须调用,什么时候不需要。它是否取决于我的 dataObject 实例?例如,当我在我的项目中有我的 WPF 表单和另一个名为 dataObject.cs 的类时,我用
初始化这个类private dataObject dataO = new dataObject();
在我的 WPF 表单中,我是否必须在使用它时调用它,因为它是另一个类?或者我不必调用它,因为它是在我的 gui 中初始化的,因此 GUI 线程无论如何都在处理该类?那么在哪些情况下我必须调用数据对象?
其次,我想了解有关如何在 c# 中提高性能和数据分配的信息。例如,为了获得最佳性能,我应该在 gui 的哪个位置声明新线程、变量等?我在哪里初始化它们?何时建议创建另一个处理我的所有参数的类以及如何在我的 WPF 代码中调用这个类(以及在哪里)?也许你知道一些关于这个主题的好教程或书籍。
非常感谢!
【问题讨论】:
-
一般来说,在 WPF 中,当你在 UI 线程以外的线程上执行时,你需要使用
Dispatcher.Invoke。 -
我发布了一个问题的答案,可以澄清你对此的一些事情,看看这个stackoverflow.com/a/33671288/1728469
-
试着问一个问题。想出有用的答案会容易得多。
标签: c# multithreading performance