关于线程: 看看怎么解决

问题描述

问题描述:我现在根据多少个(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().

时间: 2024-12-03 12:20:09

关于线程: 看看怎么解决的相关文章

Python提示[Errno 32]Broken pipe导致线程crash错误解决方法_python

本文实例讲述了Python提示[Errno 32]Broken pipe导致线程crash错误解决方法.分享给大家供大家参考.具体方法如下: 1. 错误现象ThreadingHTTPServer 实现的 http 服务,如果客户端在服务器返回前,主动断开连接,则服务器端会报 [Errno 32] Broken pipe 错,并导致处理线程 crash. 下面先看个例子,python 版本: 2.7 示例代码 复制代码 代码如下: #!/usr/bin/env python #!coding=ut

多线程-高手请进!!!---线程安全问题,怎么解决new String 问题

问题描述 高手请进!!!---线程安全问题,怎么解决new String 问题 场景是:一个订单号只能一个在付款,只能一个线程处理,不同的订单号支持并发处理 现在如果是new String("20140719140818");就有问题怎么解决 如果不是new出来的,什么情况会出现问题 public class Test { public static void main(String[] args) { new Thread(){ public void run(){ pay(&quo

php线程安全编译解决方法

  php 线程安全编译 网上这么说:先安装php5,加上--maintainer-zts 然后安装pthreads cd /usr/local/src/ wget http://pecl.php.net/get/pthreads-2.0.5.tgz tar zxvf pthreads-2.0.5.tgz cd pthreads-2.0.5 /usr/local/php5.5.12-zts/bin/phpize ./configure --with-php-config=/usr/local/p

Java ,单实例 多线程 ,web容器,servlet与struts1-2.x系列,线程安全的解决

1.Servlet是如何处理多个请求同时访问呢? 回答:servlet是默认采用单实例,多线程的方式进行.只要webapp被发布到web容器中的时候,servlet只会在发布的时候实例化一次,servlet在其生命周期中只有在将项目给移除或服务器stop的时候才会销毁,那么一个web项目从发布到运行只存在一个servlet的实例.     servlet等一些web容器中有线程池ThreadPool.此处先贴出tomcat7.0.3中的server.xml里面的代码: 1

Android中加载网络资源时的优化可使用(线程+缓存)解决_Android

网上关于这个方面的文章也不少,基本的思路是线程+缓存来解决.下面提出一些优化: 1.采用线程池 2.内存缓存+文件缓存 3.内存缓存中网上很多是采用SoftReference来防止堆溢出,这儿严格限制只能使用最大JVM内存的1/4 4.对下载的图片进行按比例缩放,以减少内存的消耗 具体的代码里面说明.先放上内存缓存类的代码MemoryCache.java: 复制代码 代码如下: <SPAN style="FONT-SIZE: 18px"><STRONG>publ

GLOBAL 另起线程使用Application的时候遇到了问题,请高手帮忙解决一下

问题描述 global代码是这样的usingProject.Bll.Account.SystemSend;protectedvoidApplication_Start(objectsender,EventArgse){SystemSendSystemSend=newSystemSend();ThreadThd1=newThread(newThreadStart(SystemSend.Call_Get_MessSend));Thd1.Start();}SystemSend类代码publicvoid

Android中加载网络资源时的优化可使用(线程+缓存)解决

网上关于这个方面的文章也不少,基本的思路是线程+缓存来解决.下面提出一些优化: 1.采用线程池 2.内存缓存+文件缓存 3.内存缓存中网上很多是采用SoftReference来防止堆溢出,这儿严格限制只能使用最大JVM内存的1/4 4.对下载的图片进行按比例缩放,以减少内存的消耗 具体的代码里面说明.先放上内存缓存类的代码MemoryCache.java: 复制代码 代码如下: <SPAN style="FONT-SIZE: 18px"><STRONG>publ

NGINX引入线程池 性能提升9倍

1. 引言 正如我们所知,NGINX采用了异步.事件驱动的方法来处理连接.这种处理方式无需(像使用传统架构的服务器一样)为每个请求创建额外的专用进程或者线程,而是在一个工作进程中处理多个连接和请求.为此,NGINX工作在非阻塞的socket模式下,并使用了epoll 和 kqueue这样有效的方法. 因为满负载进程的数量很少(通常每核CPU只有一个)而且恒定,所以任务切换只消耗很少的内存,而且不会浪费CPU周期.通过NGINX本身的实例,这种方法的优点已经为众人所知.NGINX可以非常好地处理百

线程管理(九)使用本地线程变量

校对:方腾飞 使用本地线程变量 并发应用的一个关键地方就是共享数据.这个对那些扩展Thread类或者实现Runnable接口的对象特别重要. 如果你创建一个类对象,实现Runnable接口,然后多个Thread对象使用同样的Runnable对象,全部的线程都共享同样的属性.这意味着,如果你在一个线程里改变一个属性,全部的线程都会受到这个改变的影响. 有时,你希望程序里的各个线程的属性不会被共享. Java 并发 API提供了一个很清楚的机制叫本地线程变量. 在这个指南中, 我们将开发一个程序,这