-
如果使用多執行緒,則可以在另乙個執行緒中休眠,然後使用委託求解主線程來更改標籤文字。
以下是將標籤命名為 lable1 的方法
using ;
在載入主窗體時執行。
private void form1_load(object sender, eventargs e)
thread t = new thread(new threadstart(delegate()
region[ 新執行緒 ]。
使用新執行緒執行的函式。
public void runbynewth()
text;#endregion
這種執行緒委託也有一定的侷限性,比如當主線程繁忙時,委託會被推遲,也就是說,委託中設定的時間可能不是很準確。
-
最新版本。 有 async 和 await,可以輕鬆解決這個問題。
老。 NET 可以嘗試使用 Invoke 委託訪問主線程的控制項:
假設標籤名稱為 label1。
首先,建立乙個新委託:
private delegate void modlabeltext(string msg);
然後構建乙個方法,讓主線程修改標籤:
private void modlabeltext(string message)
if (modlabeltext c = new modlabeltext(modlabeltext);
new object
message;
接下來,為新執行緒生成乙個要使用的方法:
private void label1sleep()
讓此子執行緒休息 1 秒鐘。
執行其他操作。
modlabeltext("你也很好");
最後,可以先改文字,再等一下再看,改了嗎?
private void button1_click(object sender, eventargs e)
你好";td = new ;;
-
= "a";
或; = "b";
測試已通過。
原因是程式還沒來得及改變 lb 的 text 屬性就已經開始休眠了,休眠結束後,直接分配了 b,所以你看到的就是 b,所以加一句話更新控制項或者重繪控制項,更新或重繪完成後開始休眠, 您可以獲得所需的結果。
-
沒有計時器你用什麼? 你只是想出了 10,000 種仍然操作執行緒來實現你的功能的方法,計時器是乙個很好的控制,執行緒是獨立的,資源共享! 不要打擾它。
-
由於使用錯誤而報告錯誤。 解決方案和步驟如下:
1. 首選,開啟編譯器,然後在命令列中鍵入 edit 將其開啟,如下圖所示。
2. 其次,完成以上步驟後,輸入 function 表示該檔案為函式檔案,如下圖所示。
3. 接下來,如果在等號的左側輸入任何返回值,請使用方括號表示多個返回值,如下圖所示。
4.那麼,等號右邊是函式名加括號,括號是引數,如下圖所示。
5.隨後,在完成上述步驟後,使用注釋,注釋的第一行是解釋函式的功能,如下圖所示。
6.然後,在完成上述步驟後,傳遞兩點的坐標,然後計算兩點之間的距離,並將其傳遞給返回值y,如下圖所示。
7. 最後,完成以上步驟後,儲存檔案,儲存時檔名和函式名保持不變,如下圖所示。 這樣,問題就解決了。
-
兩者是完全不同的:
1.語法錯誤:語法錯誤是指**錯誤,即編譯錯誤,即在開發時可以識別的錯誤。 ** 在C語言中出現可編譯性錯誤將根本無法編譯,即你將無法構建乙個可執行程式。
2、異常錯誤:異常錯誤是執行時錯誤,即在程式執行過程中觸發某種情況導致的錯誤,在編譯時無法發現,只能在執行時發現。 例如:
a)string s = null; ',');在這種情況下,將報告乙個 nullreference 異常,該異常告訴您空物件無法呼叫 split 方法。 但是,在編譯時,你並不知道 s 是否為 null(畢竟很少有人真正把這兩句話寫在一起,也許 s 在中途不是 null),所以在編譯過程中沒有錯誤,只有在執行的時候才會出現錯誤。
你的婚姻有點像我,我和我老公也是跨省聯姻,我是桂林人,我老公是陝西人。 我老公也去了我們家,但我們還要在陝西照顧他的父母。 只是我們沒有買房,現在桂林的房子是我爸媽蓋的,所以當時沒有買房的問題。 >>>More
我覺得lz只是想列印出a的位址和a+1的位址這裡,a是陣列的起始位址,所以&a把a的位址作為變數,也就是儲存陣列位址的位址,但是如果(a+1)有位址,那就不對了, 因為(A+1)這裡不是定義的變數,而是臨時變數的值,所以只等於陣列起始位址的下乙個位址的值,而不是儲存值的變數,取位址是不對的。 >>>More