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

學習C#線程

編輯:C#入門知識

學習C#線程。本站提示廣大學習愛好者:(學習C#線程)文章只能為提供參考,不一定能成為您想要的結果。以下是學習C#線程正文


2016-12-17 

有意間看到了關於C#線程的解說。經過一下午的學習後,漸漸的對線程也有了一定的了解。這裡解說的是最根底的內容,包括線程的創立、睡眠、等候、終止。

實驗環境:Visual studio 2010.

運用言語:C#

內容:創立、睡眠、等候、中止線程

1.創立新線程對象 Thread t=new Thread();

 1 using System;
 2 using System.Threading;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Text;
 6 
 7 namespace 線程學習
 8 {
 9     class Program
10     {
11         static void PrintNumbers()
12         {
13 
14             Console.WriteLine("Starting...");
15             for (int i = 1; i < 10; i++)
16             {
17                 Console.WriteLine(i);
18             }
19         }
20 
21         static void Main(string[] args)
22         {
23             Thread t = new Thread(PrintNumbers);
24             t.Start();
25             PrintNumbers();
26         }
27     }
28 }
View Code

經過Thread t=new Thread創立新對象後,t為子線程,t.Start()開端執行子線程,子線程執行結構對象中的PrintNumber()函數,父線程執行下一行的PrintNumbers()函數,兩線程並發,所以後果不定。

2.線程睡眠   調用Slee()函數,選擇讓線程暫時“睡眠“

using System;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 線程學習
{
    class Program
    {
        static void PrintNumbers()
        {
            Console.WriteLine("Starting...");
            for (int i = 1; i < 10; i++)
            {
                Console.WriteLine(i+"父線程");
            }
        }
        static void PrintNumbersWithDelay()
        {
            Console.WriteLine("Starting...");
            for (int i = 1; i < 10; i++)
            {
                Thread.Sleep(TimeSpan.FromSeconds(1));
                Console.WriteLine(i+"子線程");
            }
        }

        static void Main(string[] args)
        {
            Thread t = new Thread(PrintNumbersWithDelay);
            t.Start();
            PrintNumbers();
        }
    }
}
View Code

創立線程後,子線程t執行PrintNumbersWithDelay()函數,其中每循環一次就睡眠一秒,父線程執行下一行的PrintNumbers()函數,兩線程並發執行。

3.線程等候 調用join()函數,讓線程依照想要的順序執行

 1 using System;
 2 using System.Threading;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Text;
 6 namespace 線程學習
 7 {
 8     class Program
 9     {
10         static void PrintNumberWithDelay()
11         {
12             Console.WriteLine("Starting...");
13             for (int i = 1; i < 10; i++)
14             {
15                 Thread.Sleep(TimeSpan.FromSeconds(1));
16                 Console.WriteLine(i);
17             }
18         }
19         static void PrintNumbers()
20         {
21             Console.WriteLine("Starting...");
22             for (int i = 1; i < 10; i++)
23             {
24                 Console.WriteLine(i);
25             }
26         }
27         static void Main(string[] args)
28         {
29             Console.WriteLine("Starting...");
30             Thread t = new Thread(PrintNumberWithDelay);
31             t.Start();
32             t.Join();
33             PrintNumbers();
34             Console.WriteLine("Thread completed");
35         }
36     }
37 }
View Code

創立線程後,t.join()之後的語句(即父線程)必需等候之前的語句執行完後,才干執行。

4.線程終止 調用Abort()函數,殺死該線程。

using System;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 線程學習
{
    class Program
    {
        static void PrintNumbers()
        {
            Console.WriteLine("Starting...");
            for (int i = 1; i < 10; i++)
            {
                Console.WriteLine(i);
            }
        }
        static void PrintNumberWithDelay()
        {
            Console.WriteLine("Starting...");
            for (int i = 1; i < 10; i++)
            {
                Console.WriteLine(i);
                Thread.Sleep(TimeSpan.FromSeconds(1));

            }
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Starting Program..");
            Thread t = new Thread(PrintNumberWithDelay);
            t.Start();
            t.Abort();
            Console.WriteLine("A thread has been aborted");
            t = new Thread(PrintNumbers);
            t.Start();
            PrintNumbers();
        }
    }
}
View Code

運用Abort()完畢子線程。前面的代碼跟後面例一相似

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