簡體   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