我在this post中提到的問題實際上是因爲跨線程GUI問題(我希望)發生的。Java invokeAndWait C#Action Delegate
請問您可以幫助我使用Java版本的操作委託嗎?
this.Invoke(new Action(delegate()
{...}));
這是怎麼achived在Java中:
在C#它,因爲這直列做了什麼?
謝謝。
public class processChatMessage implements Observer {
public void update(Observable o, Object obj) {
System.out.println("class class class" + obj.getClass());
if (obj instanceof String){
String msg = (String)obj;
formatChatHeader(chatHeader.Away, msg);
jlStatusBar.setText("Message Received");
// Show chat form
setVisibility();
}
}
}
processChatMessage由從遠程節點接收新數據觸發的單獨線程調用。
我想錯誤正在產生,因爲它試圖更新GUI控件。
你認爲這是原因嗎?我問,因爲我是新來的Java和C#,但這是我所想的事情。
SOLUTION:
public class processChatMessage implements Observer {
public void update(Observable o, Object obj) {
if (obj instanceof String){
final String msg = (String)obj;
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
formatChatHeader(chatHeader.Away, msg);
jlStatusBar.setText("Message Received");
setVisibility();
}
});
} catch (InterruptedException e){
} catch (InvocationTargetException e){
}
}
}
}
感謝您的提示,現在它的工作原理沒有像上一篇文章中報告的那樣拋出異常。 – iTEgg 2010-05-17 17:22:35