[英]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.