程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 淺談.NET下的多線程和並行計算(八)Winform中多線程編程基礎 上

淺談.NET下的多線程和並行計算(八)Winform中多線程編程基礎 上

編輯:關於ASP.NET

首先我們創建一個Winform的應用程序,在上面添加一個多行文本框和一個按鈕控件,按鈕的事件如下 :

Thread.Sleep(1000);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++)
   sb.Append("test");
string s = sb.ToString();
textBox1.Text = s;

首先我們可以把這個操作理解為一個非常耗時的操作,它至少占用1秒的時間。在1秒後,我們整了一 個大字符串作為文本框的值,然後在標簽上顯示給文本框賦值這個UI渲染行為需要的時間,程序執行結果 如下:

我們可以感受到,在點擊了按鈕之後整個程序的UI就卡住了,沒有辦法拖動沒有辦法改變大小,用於 體驗非常差。一般能想到會新建一個線程來包裝這個方法,使得UI線程不被卡住:

new Thread(() =>
{
   Thread.Sleep(1000);
   StringBuilder sb = new StringBuilder();
   for (int i = 0; i < 10000; i++)
     sb.Append("test");
   string s = sb.ToString();
   textBox1.Text = s;
}).Start();

使用調試方式運行程序的話會得到如下的異常(非調試方式不會):

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved