C# 的 Thread (執行緒、線程)

基礎篇

C# 簡介

開發環境

變數與運算

流程控制

陣列

函數

物件

例外處理

函式庫篇

檔案處理

資料結構

正規表達式

Thread

應用篇

視窗程式

媒體影音

網路程式

遊戲程式

手機程式

資料庫

雲端運算

特殊功能

委派

擴展方法

序列化

LinQ

WPF

網路資源

教學影片

投影片

教學文章

軟體下載

考題解答

101習題

簡介

C# 支援多執行緒 (線程) 的概念,多執行緒在網路程式設計當中具有相當重要的用途,幾乎所有網路程式都會依賴多執行緒去處理對方的連線,在學習網路程式設計之前,讀者有必要先理解多執行續的概念。

程式範例 1

以下程式建立了兩個執行緒 (thread1, thread2),這兩個執行緒都會執行 count 函數,從 0 數到 4。但是在執行結果中,讀者可以發現兩個執行緒是交錯進行的,因此印出的結果是 (0,0,1,1,2,2,3,3,4,4) 這樣的序列,而非 (0,1,2,3,4, 0,1,2,3,4) 這樣的序列,這代表兩個 count() 函數同時都在執行,這就是多執行續的基本功效。

using System;
using System.Threading;

class ThreadTest
{
    public static void Main(String[] args)
    {
        Thread thread1 = new Thread(new ThreadStart(count));
        Thread thread2 = new Thread(new ThreadStart(count));
        thread1.Start();
        thread2.Start();
        thread1.Join();
        thread2.Join();
    }

    public static void count()
    {
        for (int i = 0; i < 5; i++)
        {
         Console.WriteLine(i);
         Thread.Sleep(10);
        }
    }
}
D:\myweb\teach\CSharpNetworkProgramming>csc ThreadTest.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.1
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.

D:\myweb\teach\CSharpNetworkProgramming>ThreadTest
0
0
1
1
2
2
3
3
4
4

程式範例 2

using System;
using System.Threading;

class SimpleThread {
    String name;

    public static void Main(String[] args) {
        SimpleThread a = new SimpleThread("A");
        SimpleThread b = new SimpleThread("B");
        Thread athread = new Thread(new ThreadStart(a.run));
        Thread bthread = new Thread(new ThreadStart(b.run));
        athread.Start();
        bthread.Start();
    }

    SimpleThread(String pName) {
        name = pName;
    }

    public void run() {
        for (int i=0; i<10000; i++) {
         String line = name+":"+i;
         Console.WriteLine(line);
        }
    }
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License