Multithreading 当关联但不拥有winform时,线程停止

Multithreading 当关联但不拥有winform时,线程停止,multithreading,winforms,events,Multithreading,Winforms,Events,我希望有人能帮我诊断一些我似乎正在经历的极度疼痛 我的主窗体创建了我的FccEventListener类的一个实例,该类又创建了一个侦听网络端口的后台线程。然后,主窗体创建另一个名为frmPendingTransactions的窗体的实例,并将fccEventListener传递到其构造函数中。frmPendingTransactions然后订阅fccEventListener提供的许多事件以及另一个名为recyclerClient的服务 一切似乎都很好。我可以随心所欲地显示和隐藏(而不是关闭)

我希望有人能帮我诊断一些我似乎正在经历的极度疼痛

我的主窗体创建了我的FccEventListener类的一个实例,该类又创建了一个侦听网络端口的后台线程。然后,主窗体创建另一个名为frmPendingTransactions的窗体的实例,并将fccEventListener传递到其构造函数中。frmPendingTransactions然后订阅fccEventListener提供的许多事件以及另一个名为recyclerClient的服务

一切似乎都很好。我可以随心所欲地显示和隐藏(而不是关闭)frmPendingTransactions,fccEventListener会继续做这件事,不用担心。但是,如果触发recyclerClient事件并导致调用Hide()方法,则frmPendingTransactions将被隐藏,但侦听线程将停止其工作。如果调用Hide()方法,线程将停止执行其任务。但是,如果我完全跳过对Hide()方法的调用,并手动隐藏到表单中(不管怎么说,它只使用相同的代码),那么就可以了

我试着转换成一个幕后工作者,看到了同样的行为

我不明白隐藏表单B(通过另一个服务触发的事件)如何可能影响其父表单表单a所拥有的线程


提前感谢您提供的任何帮助。

FccEventListener启动后台线程并触发UI线程捕获的事件。我的猜测是,recyclerClient事件是在后台线程上触发的,并试图在前台线程上进行处理,从而导致在FccEventListener中的某个地方捕获到跨线程错误。但由于您没有在问题中提供任何代码,因此无法进行诊断。我有一大堆日志记录和异常处理,它们尚未暴露异常。这里面有很多东西,但我会尽量把代码提炼成我可以发布的东西。不过要等到明天早上。仅供参考,recyclerClient是一个wdsl web服务参考。