久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C#線程單參數(shù)的傳遞...

 行走在理想邊緣 2020-12-14

一般每個(gè)線程都具有固定的任務(wù),。
有時(shí)候在一個(gè)系統(tǒng)中,,多個(gè)任務(wù)只有一點(diǎn)點(diǎn)的區(qū)別,,比如任務(wù)1每秒打印一句“hello tom”,任務(wù)2每秒打印一個(gè)“hello jerry”,,這種情況下完全沒(méi)有必要寫(xiě)兩個(gè)static函數(shù)(占用內(nèi)存),,而且如果以后還有cherry、nancy等人的問(wèn)候語(yǔ),,這個(gè)時(shí)候就需要用到函數(shù)參數(shù)傳遞了,。

csharp中的直接參數(shù)傳遞實(shí)際很容易,但是只能傳遞一個(gè)參數(shù),。
先定一個(gè)線程函數(shù):

 static void ThreadMethod(object obj)
        {
            if (obj != null)
            {
                string str = obj as string;
                while (true)
                {
                    Console.Write("hello " + str + "\r\n");
                    Thread.Sleep(1000);
                }
            }
        }

傳入?yún)?shù)類型必須是object類型,, Object類是一個(gè)特殊的類,是所有類的父類,如果一個(gè)類沒(méi)有用extends明確指出繼承于某個(gè)類,那么它默認(rèn)繼承Object類。
所以對(duì)于線程來(lái)說(shuō),,不管你傳進(jìn)來(lái)是什么類型,,反正我里面都先把你當(dāng)作obj類型來(lái)接收,如果你說(shuō)你是string類型,?那好的,,我就把你當(dāng)作是string類型:

string str = obj as string;

這樣就完成了變量的接收了。
參數(shù)的傳遞操作也很簡(jiǎn)單:

 string a = "tom ";
Thread th = new Thread(ThreadMethod); //創(chuàng)建線程
th.Start(a); //啟動(dòng)線程

這樣就可以完成參數(shù)的傳遞了,。
我們看下面一個(gè)程序:

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

namespace test
{
    class Program
    {
       
        static void ThreadMethod(object obj)
        {
            if (obj != null)
            {
                string str = obj as string;
                while (true)
                {
                    Console.Write("hello " + str + "\r\n");
                    Thread.Sleep(1000);
                }
            }
        }
        static void Main(string[] args)
        {
            
            string a = "tom ";
            int b = 2;
            Thread th = new Thread(ThreadMethod); //創(chuàng)建線程
            Thread th2 = new Thread(ThreadMethod);
            th.Start(a); //啟動(dòng)線程
            th2.Start(b);
            Console.Write("main start\r\n");
            for (int i = 0; i < 10; i++)
            {
                Console.Write(i + "\r\n");
                Thread.Sleep(1000);
            }
            Console.Write("main end\r\n");
            th.Abort();
            th2.Abort();
            Console.ReadKey();
        }
    }
}

上面的代碼中,,線程調(diào)用了兩次,控制臺(tái)應(yīng)該可以看到“hello tom”和“hello 2”,,發(fā)現(xiàn)2好像并沒(méi)有傳進(jìn)來(lái),。
在這里插入圖片描述
嘗試把string改成int,爆出了int不具備null的錯(cuò)誤,,所以這里只能穿具有null屬性的變量類型,,如obj,、string,當(dāng)然還有class,。
在這里插入圖片描述
對(duì)于多個(gè)參數(shù)傳遞,,可以定義一個(gè)class,其中的成員函數(shù)包含我們所需要的所有參數(shù),,這樣雖然名義上只傳遞了一個(gè)class變量,實(shí)際已經(jīng)完成了多變量傳遞,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多