c# - 从计时器触发事件​​到 WPF UI

标签 c# wpf

我有一个应用程序,它由一个 WPF UI 组成,它下面有一个“基础结构”层,它引用了各种数据服务。我有一个类 Updater,它有几个属性代表 UI 层要使用的数据。这个更新器有一个 Systems.Timer 函数,这样每分钟左右,它就会对服务进行同步调用,并通过“刷新”数据来更新上述属性。

我想从此类引发一个事件,以便在完成时通知 UI 更改。当我之前做类似的事情时,它会左右抛出异常,因为触发事件的线程不同(因为它来自计时器已用事件),然后是创建对象的线程。

我现在使用的蹩脚解决方案是在 UI 层上有另一个计时器但是......糟糕。

通知 UI 更新程序类已完成所有工作的最佳方式是什么?

最佳答案

那些跨线程异常可以通过Dispatcher.Invoke函数更新UI来解决。 Dispatcher 是一个可用于调用 UI 线程的对象。给this article仔细阅读,您应该准备就绪。

关于c# - 从计时器触发事件​​到 WPF UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978057/

相关文章:

c# - 我可以在不签署完全信任的情况下部署 XBAP 吗?

c# - 如何通过代码设置WPF canvas children的x,y坐标?

c# - WPF+EF - 操作无法完成,因为 DbContext 已被释放

c# - c++和c#中 'this'指针的概念和数据类型

c# - PushSharp WithCustomItem 发送失败

c# - 如何设置表单可见区域的大小,减去标题和边框?

c# - 在代码后面更改 Canvas.Left 属性?

c# - 使用 Linq 的数据透视表

c# - 在所述结构之外的结构中创建新属性

c# - 如何阻止 TabItem 四处移动