繁体   English   中英

循环问题

[英]While-loop issues

我正在从while循环内的串行端口读取数据,如下所示:

while((len = this.getIn().read(buffer)) > 0) {
    data = new String(buffer, 0, len);
    System.out.println("data len " + len);
    handleModemresponse(data);
}

但是,当从流中读取数据开始时,具有断开按钮的主AWT窗口没有获取任何侦听器(整个窗口没有获取侦听器)。 它仅在传输完成时(即在while循环之外)进行侦听。

我希望我的AWT窗口在while循环中时也要监听我的操作。

有什么想法可以实现这一目标吗?

为读取操作创建一个新线程。

public class LongProcess implements Runnable {
  public void startProcess() {
    Thread t = new Thread(this);
    t.start();
  }

      public void run() {
// Define inputstream here
        while((len = inputStream.read(buffer)) > 0) {
         data = new String(buffer, 0, len);
         System.out.println("data len " + len);
         handleModemresponse(data);
        }
      }
    }

编辑 (Tom Hawtin评论后-大头贴):

SwingUtilities.invokeLater(new LongProcess ());

似乎您将所有内容都放在一个线程中-因此,当您的工作方法正在进行时,您的GUI似乎被阻塞,并且直到循环结束才响应任何操作。

您必须在一个线程中将GUI出席人数与在另一个线程中的工作方法分开。

您正在调用的read方法正在阻止。 您需要将其移动到其他线程中,以使您的听众继续工作。

我怀疑您应该将此while循环推入一个单独的线程中,以免在传输过程中占用AWT线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM