Display.findDisplay(t)在我的所有线程上返回null

时间:2014-03-14 14:19:33

标签: java multithreading user-interface swt

我目前正在开发一个用Shehell搜索所有SWT显示器的Mehtod:

 /**
 * retrieves all display objects of all threads  which have shells
 * 
 * @return list of displays
 */
public static ArrayList getAllDisplays(){
    Display display = null;
    ArrayList<Display> retVal = new ArrayList<Display> ();

    for(Thread t : Thread.getAllStackTraces().keySet()){
        logger.info ("currentThread set to: " + t);
        if (t != null) {
            logger.info ("currentThread is not null");
            display = Display.findDisplay(t);
            logger.debug ("display: " + display);
            if(display!=null) {
                boolean b = hasShells(display) ;
                logger.debug("b: " + b);
                if( b ){
                    logger.debug("found a display with shells ! ");
                    retVal.add(display);
                }
            }
        }
        logger.info ("Next Thread");
    }
    return retVal;

}

现在我尝试使用此方法处理SWT应用程序,但Display.findDisplay(t);始终返回null。

有可能没有一个线程是UI线程吗?我是否会错过Display.findDisplay(t);的一些帖子?

谢谢!

0 个答案:

没有答案