【发布时间】:2015-10-26 15:13:38
【问题描述】:
我正在使用 Meebey SmartIrc4Net 编写 IRC 客户端。
通过使用 BackgroundWorker,我通过类提供的 .Listen() 方法监听所有 IRC 事件。
我用一个方法处理了一个 OnJoin 事件,该方法通过生成另一个 BackgroundWorker 并轮询其中的数据来获取频道的用户列表。
所以现在我有一个主线程、一个 irc 事件 bgWorker,据我所知是主线程的子线程,以及一个用户列表 bgWorker。
问题是我无法在任何 bgWorkers 中创建 UI 元素,例如,如果我想向 StackPanel 添加按钮,我无法在 bgWorkers 工作方法中声明按钮,或者即使我使用 reportProgress 方法作为它似乎是向第一个 bgWorker 报告,而不是向主线程报告。
调用线程必须是 STA,因为很多 UI 组件都需要这个。
自从我的应用使用 .Net Framework 4.5 以来,我一直使用 bgWorkers 和 async/await 和任务,但均无济于事。
这与将控件从 bgWorker 添加到主线程的最常见场景不同,我有三个线程,我试图从主线程的子线程的子线程添加控件,建议解决方案仅在有单个 bgWorker 和主线程时才有用。
提前致谢。
【问题讨论】:
-
请投反对票的人,请解释一下你投反对票的原因?
-
我投了反对票,因为您没有提供任何证据证明您对此进行了研究(如果您将鼠标悬停在反对票按钮上,这是它提供的第一个理由,说明您可能会反对票)。我在搜索时立即找到了我在第一条评论中提供的链接。即使您进行了搜索并且找不到任何东西,您仍然需要为您的问题中的研究提供证据。
-
我编辑了我的答案以说明为什么建议的链接不能解决我的问题,我现在将添加代码示例
-
没关系,您可以不同意我的说法,即这是一个骗局,但您仍然需要证明您在发布问题之前已研究过您的问题。
标签: c# wpf async-await backgroundworker