我有兩個線程的應用程序。其中一個(T1)是主要的GUI形式,另一個(T2)是循環中的函數。當T2獲取一些信息時必須用GUI的形式調用函數。 我不確定我是否做得對。beginInvoke,GUI和線程
T2調用函數FUNCTION,它以GUI的形式更新某些東西。
public void f() {
// controler.doSomething();
}
public void FUNCTION() {
MethodInvoker method = delegate {
f();
};
if (InvokeRequired) {
BeginInvoke(method);
} else {
f();
}
}
但是現在我必須聲明兩個函數。它如何只使用一個功能?或者它是如何正確的。
尼斯模式。如果您是從第二個線程調用的,則可以使用一個遞歸調用來調用自己。我認爲調用應該是同步完成的,所以來自第二個線程的調用(看起來是同步的;只是一個普通的方法調用)將以與從GUI線程調用相同的方式工作,在返回之前執行適當的任務。 – KeithS 2011-06-07 16:14:58
有趣:我沒有看到它這樣做......它不會導致無限循環? – IAbstract 2011-06-07 16:15:26
@nirmus:在大括號之後 - 我認爲目標是刪除第二個函數[「f()」] - 在這裏,它被放置在大括號後的主函數中。基本上,如果你需要調用,你自己調用,如果沒有,你可以做任何你想做的事情...... – 2011-06-07 16:16:13