我在WPF中有一个MVVM应用程序。我有一个从类的静态实例调度的事件。
当出现给定条件时,我需要监听下一次出现的事件。我使用以下代码执行此操作:
myInstance.OnData += myEventHandlerInstance;
稍后会删除事件处理程序,但是一旦添加它,其他视图模型中的事件处理程序就不再执行了。我已经验证了调度程序在触发和处理事件的所有地方都是相同的实例(使用下面描述的方法)。
为什么现有的处理程序没有被执行?
答案 0 :(得分:0)
删除此行:
myInstance.OnData -= new EventHandler(myInstance_onData);
你为什么这样做?您应该获取原始事件处理程序并删除它。此外,您应该在事件处理程序本身之外执行此操作。
答案 1 :(得分:0)
你必须输入这样的东西,以确保你的代码在正确的线程上执行:
if(Dispatcher.CurrentDispatcher.CheckAccess())
{
<Code here>
}
else
{
Dispatcher.CurrentDispatcher.Invoke(<Code here>)
}
答案 2 :(得分:0)
感谢大家的帮助。你帮助我专注于这个问题。这个问题纯粹是一个结构/逻辑问题,我能够深入挖掘代码。