我有一个非常复杂的WPF应用程序,我显示和处理的页面都在dll中。到目前为止,此工作正常。
我在应用程序的主页面中设置了一个计时器,用于查找来自外部源的通信。当我得到一个沟通(而且我很模糊,不要加入混乱)我解析它,如果消息是“xyx”,我需要启动XYL dll的UI。我得到调用线程必须是sta因为许多ui组件需要这个。 我在Web上看到有关必须调用Invoke()的文章,我不能使用工作线程而是使用后台线程。
我的问题是我正在使用的System.Timers.Timer吗?这会导致工人线程吗?我不知道在我的调用中我需要启动一个线程来运行它(或者如何处理它)。
有什么建议吗?
答案 0 :(得分:0)
计时器通常在线程池线程上运行,这是MTA。
请改用DispatcherTimer或使用Dispatcher.Invoke。然后,dll的UI将在与主页的UI(即STA)相同的线程上运行
如果你想让dll的UI在不同的线程上运行,你需要自己创建线程并将其设置为STA。
答案 1 :(得分:0)