-
主線程建立的控制項不能直接在子執行緒中使用。 需要建立委託,在委託事件中寫入主線程式控制件操作的**,並在子執行緒中呼叫委託操作的主線程式控制件。
下面是乙個寫作示例:
public partial class form1 : form
thread thread=null;
int n = 0;
bool severisrun=false;它用於顯示執行緒是否已啟動。
private delegate void mydelegate(string str);定義委派。
private void setrich(string str) 委託。
if (mydelegate md = new mydelegate(;
new object
str;public form1()
initializecomponent();
private void run()
while(true)
setrich((n++)tostring())
private void button1_click(object sender, eventargs e)
if(!severisrun)
threadstart ts =new threadstart(run);
thread = new thread(ts);
severisrun=true;
private void button2_click(object sender, eventargs e)
if(severisrun)
severisrun=false;
private void form1_formclosing(object sender, formclosingeventargs e)
if(severisrun)
severisrun=false;
-
委託。 private void delegate changechkboxstatedelegate();
如果私有 void changechkboxstate() 方法有引數,則在上面的委託定義中也必須具有相同的引數。
if(changechkboxstatedelegate newdelegate = new changechkboxstatedelegate();
new object{
-
是的,將其新增到表單建立或載入方法中。
false;
可以把筵席叫過志陵銀線,王淳。 一般來說,小程式可以通過自己玩來做到這一點。
-
C 中的 UI 元素由主線程建立,只能由建立它們的主線程修改,因為 UI 元素本身不是執行緒安全的,多執行緒操作可能會導致不可預知的錯誤。 因此,預設情況下,嘗試從其他執行緒操作 UI 元素會引發異常,儘管您可以通過以下方式強制對 UI 元素進行跨執行緒操作:
checkforillegalcrossthreadcalls = false;
但是,不建議這樣做。 通常,建議對 UI 元素進行跨執行緒操作。
method);
method, params object args);
invoke 方法可以由任何執行緒呼叫,但只會在建立表單的主線程上執行相應的委託。
乙個最小的例子如下:
private void button1_click(object sender, eventargs e)
private void threadaction()
private void uiaction()
因為 invoke 的引數包含委託委託,所以需要根據要呼叫的方法的引數和返回值定義對應的委託,然後才能呼叫它。 在上面的例子中,uiaction 方法沒有引數,也沒有返回,所以它直接使用了 methodinvoker 的內建委託。
您是否正在將資料從 Excel 匯入 Winform? 如果是這樣,它可以是這樣的:引用元件後,應用程式; 這是乙個客戶端。 >>>More
SQL分頁欄使用乙個變數記錄進入資料庫檢查的頁數,定義三個變數,第乙個是當前頁數,第二個顯示每頁有多少條資料,第三個查詢乙個計數來顯示總共有多少頁,前面可以和資料來源繫結。 >>>More
我就不具體怎麼複習了:
讓我們先讓大家知道研究生入學考試的內容吧! 我今年考研分為初試和複試,初試滿分500分 英語(100)、數學(150)、政治(100)是全國統一命題,還有一門專業課程(150)和你申請的單位的命題。 >>>More
您好,作為今年帶著電子資訊上岸參加某天坑盤問的準研究生,希望能讓大家思考一下是否要過考,決定過考後該怎麼辦。 >>>More