在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C#/ C#線程實(shí)例
C#屬性(Properties)
C#與Java比較
C#方法
C#枚舉
C#關(guān)鍵字
C# StreamReader類
C#不安全代碼
C#文件(I/O)
C#匿名方法
C#線程同步
C# Thread類
C#主線程
C#數(shù)據(jù)類型
C# FileStream類
C#預(yù)處理指令
C#繼承
C#循環(huán)
C#決策結(jié)構(gòu)
C#集合
C#反射
C#類型轉(zhuǎn)換
C#泛型
C# StringReader類
C#歷史
C#運(yùn)算符重載
C#屬性
C#線程實(shí)例:Sleep()方法
C#線程示例:優(yōu)先級(jí)
C#線程實(shí)例:Join()方法
C# BinaryReader類
C#類
C#索引器
C# BinaryWriter類
C#序列化
C#常量和文字
C#程序結(jié)構(gòu)
C#封裝
C#事件
C#可空類型(nullable)
C#基本語法
C#異常處理
C#教程
C#接口
C# System.IO命名空間
C#線程命名實(shí)例
C# StringWriter類
C#線程實(shí)例
C#數(shù)組
C#正則表達(dá)式
C#命名空間
C#反序列化
C#與C++比較
C# TextWriter類
C#多線程
C#字符串
C#是什么?
C#變量
C# FileInfo類
C#線程實(shí)例:Abort()方法
C#結(jié)構(gòu)體
C#運(yùn)算符
C#入門程序
C#多線程生命周期
C# TextReader類
C# DirectoryInfo類
C#委托

C#線程實(shí)例

在執(zhí)行線程時(shí)可以調(diào)用靜態(tài)和非靜態(tài)方法。要調(diào)用靜態(tài)和非靜態(tài)方法,需要在ThreadStart類的構(gòu)造函數(shù)中傳遞方法名稱。對(duì)于靜態(tài)方法,不需要?jiǎng)?chuàng)建類的實(shí)例??梢酝ㄟ^類的名稱來引用它。

using System;
using System.Threading;
public class MyThread
{
    public static void Thread1()
    {
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine("Thread1: "+i);
        }
    }
}
public class ThreadExample
{
    public static void Main()
    {
        Thread t1 = new Thread(new ThreadStart(MyThread.Thread1));
        Thread t2 = new Thread(new ThreadStart(MyThread.Thread1));
        t1.Start();
        t2.Start();
    }
}

上述程序的輸出可以是任何東西,因?yàn)榫€程之間有上下文切換。在我運(yùn)行上面示例時(shí)輸出以下結(jié)果 -

Thread1: 0
Thread1: 1
Thread1: 0
Thread1: 1
Thread1: 2
Thread1: 3
Thread1: 4
Thread1: 5
Thread1: 6
Thread1: 7
Thread1: 8
Thread1: 2
Thread1: 3
Thread1: 4
Thread1: 5
Thread1: 6
Thread1: 7
Thread1: 8
Thread1: 9
Thread1: 9

C# 線程示例:非靜態(tài)方法

對(duì)于非靜態(tài)方法,需要?jiǎng)?chuàng)建類的實(shí)例,以便我們可以在ThreadStart類的構(gòu)造函數(shù)中引用它。

using System;
using System.Threading;

public class MyThread
{
    private String name;

    public MyThread(String name)
    {
        this.name = name;
    }
    public void Thread1()
    {
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine(this.name+": "+i);
        }
    }
}

public class ThreadExample
{
    public static void Main()
    {
        MyThread mt = new MyThread("Thread1");
        MyThread mt2 = new MyThread("Thread2");
        Thread t1 = new Thread(new ThreadStart(mt.Thread1));
        Thread t2 = new Thread(new ThreadStart(mt2.Thread1));
        t1.Start();
        t2.Start();
    }
}

這個(gè)程序的輸出可以是任何順序,因?yàn)榫€程之間有上下文切換,所以每次執(zhí)行的結(jié)果都不太一樣。輸出結(jié)果如下所示 -

Thread1: 0
Thread1: 1
Thread2: 0
Thread2: 1
Thread2: 2
Thread2: 3
Thread2: 4
Thread2: 5
Thread2: 6
Thread2: 7
Thread2: 8
Thread2: 9
Thread1: 2
Thread1: 3
Thread1: 4
Thread1: 5
Thread1: 6
Thread1: 7
Thread1: 8
Thread1: 9

C# 線程示例:在每個(gè)線程上執(zhí)行不同的任務(wù)

下面讓我們來看看另外一個(gè)例子,在每個(gè)線程上執(zhí)行不同的方法。

using System;
using System.Threading;

public class MyThread
{
    public static void method1()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("This is method1 :" + i);
        }
    }
    public static void method2()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("This is method2 :"+i);
        }

    }
}
public class ThreadExample
{
    public static void Main()
    {
        Thread t1 = new Thread(new ThreadStart(MyThread.method1));
        Thread t2 = new Thread(new ThreadStart(MyThread.method2));
        t1.Start();
        t2.Start();
    }
}

這個(gè)程序的輸出可以是任何順序,因?yàn)榫€程之間有上下文切換,所以每次執(zhí)行的結(jié)果都不太一樣。輸出結(jié)果如下所示 -

This is method1 :0
This is method1 :1
This is method2 :0
This is method2 :1
This is method2 :2
This is method2 :3
This is method2 :4
This is method1 :2
This is method1 :3
This is method1 :4

上一篇:C#教程下一篇:C#關(guān)鍵字