我有一个应用程序,它由一个 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/