我一直在 Silverlight 中开发 Lync Silverlight 应用程序,现在我正在尝试将其转移到 WPF。
但是,我面临一些线程关联性问题。例如,我在我的页面上的文本块中显示 Lync 客户端的状态,因此在我后面的代码中连接了一个状态更改事件处理程序,每当 Lync 客户端的状态发生更改时,它都会将新状态写入文本块。
现在,这在 Silverlight 中完美运行,但在 WPF 中似乎是不允许的。现在我的问题是:
即使 Silverlight 应该是 WPF 的一个子集,它为什么在 Silverlight 中而不是在 WPF 中工作?
线程亲和性是一个重要的概念,我知道我们可以使用调用调度程序,但它不是以事件处理程序和回调的形式击败了异步编程的概念吗?
我在我的 XAML 页面中定义了一个按钮,并且在其上定义的单击事件处理程序可以访问其他 UI 元素,它不会遇到上述问题。
但是,如果我在代码隐藏中定义了一个 LyncClient 实例,则在其上定义的事件处理程序无法访问 UI 元素。为什么这样,我在 Silverlight 中检测到 UIElements 和其他对象之间没有这种差异?