问题描述
问题描述:我现在根据多少个(5个)线程弹出多少个(5个)隐藏的工作窗口,每个工作窗口做自己的工作.但是其中一些窗口在碰上一些问题的时候需要弹出来显示,麻烦也就来了,当我多个(5个)窗口都有问题,然后他就不停跳出,没办法手工去排除了.因为新的跳出窗口总在旧的前面.我在程序里还写了个窗口超时,然后旧就窗口就总是超时了.需求如果有多个窗口需要跳出,能不能先把他存在一个地方,当第一个窗口隐藏的时候第二个窗口才跳出来.这样保证每次最多只有一个窗口在显示.
解决方案
解决方案二:
使用AutoResetEvent,WaitOne()、Set()等方法实现具体用法参考:更多请Google
解决方案三:
使用Application.OpenForms循环查看窗体的Visible这样控制应该没有啥问题吧!
解决方案四:
我的建议是不要开多个窗口,那个浪费资源,真的很浪费,线程嘛,你开五个线程在后台运行就好了,当有问题的时候,你把数据发送到一个缓存,有一个窗体监控这个缓存就好了,有问题就把这个问题显示出来,以列表的方式,每个问题都标记一下是那个线程发生的,这样的解决方案不知道是否符合你的要求
解决方案五:
使用AutoResetEvent,WaitOne()、Set()等方法实现具体用法参考:http://www.cnblogs.com/coderlee/articles/487485.htmlhttp://www.souzz.net/html/edu/net/net12/9077.html更多请Google
解决方案六:
你可以创建一个弹出窗口队列类,将所有的弹出窗口加入这个队列,当前一个关闭后就显示下一个窗口
解决方案七:
窗口只是一个gui,如果只是显示问题,做简单处理,还是尽量少开一点.支持3楼!
解决方案八:
引用3楼Linux7985的回复:
我的建议是不要开多个窗口,那个浪费资源,真的很浪费,线程嘛,你开五个线程在后台运行就好了,当有问题的时候,你把数据发送到一个缓存,有一个窗体监控这个缓存就好了,有问题就把这个问题显示出来,以列表的方式,每个问题都标记一下是那个线程发生的,这样的解决方案不知道是否符合你的要求
赞成这个解决方案,线程后台运行,你的即时Show的信息再一个窗口上循环跑就是了就像很多系统对EXception、Alarm一样,每个有自己的AlarmName,Time,Area当问题排除时候自动清楚掉,这样比较人性化
解决方案九:
引用3楼Linux7985的回复:
我的建议是不要开多个窗口,那个浪费资源,真的很浪费,线程嘛,你开五个线程在后台运行就好了,当有问题的时候,你把数据发送到一个缓存,有一个窗体监控这个缓存就好了,有问题就把这个问题显示出来,以列表的方式,每个问题都标记一下是那个线程发生的,这样的解决方案不知道是否符合你的要求
赞同3楼的方式,既然同一时间只允许出现一个窗口,那就不如只做一个窗口。如果你的几个窗口差别很大,那可以仅在需要弹出消息时实例化相应的窗口。就是几个线程公用一个队列,再一个线程负责处理这个队列中的消息。这样就保证按先后顺序弹出相应的窗口。
解决方案十:
把窗体放在Queue里面,关闭窗体后再dequeue().