我之前的问题(SelectedIndex is un changed in tabcontrol - Dispatcher issue)并没有走得太远,我怀疑我一开始就走错了路。
我的程序中有 3 个给定:
- 我有一个 WPF 主窗口。
- 我连接到一个单独的应用程序(不同的进程),该应用程序实现了一个 COM 服务器,可以在不同时间调用该服务器以执行耗时的计算,其结果将显示在我的窗口中。
- 我不希望主窗口在等待这些计算结束时冻结。事实上,操作员应该可以自由地继续使用该程序,尽管某些控件可能会在异步操作结束之前被禁用。
在我看来,要实现上述要求,我需要有一个单独的线程专门用于处理 COM 请求,并且该线程必须是 STA。我以某种方式调用这个线程来做一些事情,而这个线程以某种方式调用 GUI 线程来更新东西。从技术上讲,我不清楚如何实现这一点。
两个问题:如何在线程之间实现这些调用?什么是干净的架构?