假设我有代码,程序应该向用户显示某种UI对话框,并根据对话框结果执行两个动作。如果我有几个线程,每个都运行这个代码,我会得到几个对话框,每个线程一个。 问题是 - 如果我想要一个对话而不是多个(例如,由第一个线程调用,执行此代码)该怎么办?这一个对话框的结果应该影响所有后续线程,而不是显示每个线程的对话框。我怎么能这样做?
请注意,我只能修改提到的部分代码,因此禁止修改线程源。
答案 0 :(得分:0)
您可以创建对话框的实例。添加一些处理所有内容的函数。
要在所有线程上使用结果,只需将结果保存在实例中的某个位置,这样您就可以在任何地方获取它。如何做这样的事情有多种方法。您可以将EventHandler添加到单例中,并且每个创建的线程都会创建一个指向该事件的链接。每当你得到一个结果时执行它。或者制作另一个静态变量,如Singleton.LastResult
这是关于C#中Singleton的link。确保你正确处理所有事情。当它关闭时,破坏实例。