非UI執行緒訪問控制項

2022-03-24 13:46:49 字數 523 閱讀 8988

在vs2003之後的版本中,.net加強了執行緒安全方面,非ui執行緒是不能直接訪問控制項的。這要求我們對控制項進行執行緒安全方式的呼叫。當然,我們也可以這樣做:checkforillegalcrossthreadcalls = false(這個屬性包含在 system.windows.forms 中)

這樣,vs就會忽略掉所有關於執行緒不安全呼叫的警告。這很方便,但是不是執行緒安全的。當同時有幾個執行緒訪問這個控制項時,就會發生意想不到的錯誤,並不推薦這種解決辦法。

查詢控制項的 invokerequired 屬性。

如果 invokerequired 返回 true,則使用實際呼叫控制項的委託來呼叫 invoke。

如果 invokerequired 返回 false,則直接呼叫控制項。

根據這樣的方法,寫出來的示例:public delegate void addlist(string s);

private void addlist(string s));}

else

}

訪問UI介面控制項

多工的處理有兩種不同的型別 基於程序和基於執行緒。理解這兩者間的區別很重要。乙個程序 process 本質上乙個正在執行的程式。因此,基於程序的多工處理 process based multitasking 允許計算機同時執行兩個或多個程式。例如,在我們使用電子 或瀏覽 internet 的同時,還...

WPF多執行緒訪問主線程中的ui控制項

wpf中的ui控制項只能由建立該ui的執行緒進行操作,但是經常有些複雜操作需要另起乙個執行緒來完成,而新的次執行緒計算的後又需要操作主線程的ui,可通過以下方法實現 第一步,定義委託 public delegate void delegate child 定義操作次執行緒的委託 public del...

其他執行緒訪問UI執行緒

final progressbar pb new progressbar shell,swt.none pb.setbounds 68,153,365,17 final int minnimum pb.getminimum final int maximum pb.getmaximum runnab...