程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 多線程重點知識總結,多線程知識總結

多線程重點知識總結,多線程知識總結

編輯:C#入門知識

多線程重點知識總結,多線程知識總結


一、進程/線程

進程:系統進行資源分配和調度的一個獨立單位。(存資源)

線程:CPU調度和分派的基本單位。(執行)

一個進程可以有多個線程,一個線程可與同屬一個進程的其他線程共享進程所擁有的全部資源。

場景:超市。

/// <summary>
/// 單線程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//int sum = 0;
//for (int i = 1; i < 999999999; i++)
//{
// sum += i;
//}
//MessageBox.Show(sum.ToString());//執行完後,才能做別的操作
}

/// <summary>
/// 多線程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
Thread thread = new Thread(TestThread);
thread.IsBackground = true;//設置為後台線程
thread.Start();
}

/// <summary>
/// 准備讓線程去調用
/// </summary>
private void TestThread()
{
int sum = 0;
for (int i = 1; i < 999999999; i++)
{
sum += i;
}
MessageBox.Show(sum.ToString());//執行完後,才能做別的操作
}


復制代碼
 1  /// <summary>
 2         /// 單線程
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void button1_Click(object sender, EventArgs e)
 7         {
 8             //int sum = 0;
 9             //for (int i = 1; i < 999999999; i++)
10             //{
11             //    sum += i;
12             //}
13             //MessageBox.Show(sum.ToString());//執行完後,才能做別的操作
14         }
15 
16         /// <summary>
17         /// 多線程
18         /// </summary>
19         /// <param name="sender"></param>
20         /// <param name="e"></param>
21         private void button3_Click(object sender, EventArgs e)
22         {
23             Thread thread = new Thread(TestThread);
24             thread.IsBackground = true;//設置為後台線程
25             thread.Start();
26         }
27 
28         /// <summary>
29         /// 准備讓線程去調用
30         /// </summary>
31         private void TestThread()
32         {
33             int sum = 0;
34             for (int i = 1; i < 999999999; i++)
35             {
36                 sum += i;
37             }
38             MessageBox.Show(sum.ToString());//執行完後,才能做別的操作
39         }
復制代碼

二、前台線程/後台線程

1、進程裡面默認的線程叫做主線程(UI線程).

2、默認情況下,線程都是前台線程(所有的線程執行完畢後,程序才退出),如要將設置成後台線程(關閉窗口後,程序就結束),設置thead.IsBackground=true.

三、線程重入以及解決方法

1、demo2中textbox是由ui線程創建的,所以創建的線程是沒法調用的,所以一開始程序會報錯, 只需要關閉控件的跨線程訪問的檢查即可.

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