内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

詳細(xì)講解在實(shí)例中.NET多線程執(zhí)行函數(shù)相關(guān)知識

在.net編程語言中為什么會出現(xiàn)多線程?原因是DebugLZQ在寫一個LINQ綜合Demo的時候遇到了多線程,便停下手來整理一下.關(guān)于多線程的文章,園子里很多很多,因此關(guān)于多線程理論性的東西,LZ就不去多說了,這篇博文主要是用最簡單的例子,總結(jié)下多線程調(diào)用函數(shù)的相關(guān)注意點(diǎn),重點(diǎn)偏向應(yīng)用和記憶.

十多年的太平網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整太平建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“太平網(wǎng)站設(shè)計(jì)”,“太平網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

    1.多線程調(diào)用無參函數(shù)

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading;

    namespace 多線程 {

    class Program

    {

    static void Main(string[] args)

    {

    Console.WriteLine(“主線程開始”);

    Thread t = new Thread(new ThreadStart(ShowTime));//注意ThreadStart委托的定義形式

    t.Start();//線程開始,控制權(quán)返回Main線程

    Console.WriteLine(“主線程繼續(xù)執(zhí)行”);

    //while (t.IsAlive == true) ;

    Thread.Sleep(1000);

    t.Abort();

    t.Join();//阻塞Main線程,直到t終止

    Console.WriteLine(“--------------”);

    Console.ReadKey();

    }

    static void ShowTime()

    {

    while (true)

    {

    Console.WriteLine(DateTime.Now.ToString());

    }

    }

    }

    }

    注意ThreadStart委托的定義如下:

詳細(xì)講解在實(shí)例中.NET多線程執(zhí)行函數(shù)相關(guān)知識

    可見其對傳遞進(jìn)來的函數(shù)要求是:返回值void,無參數(shù).

    2.多線程調(diào)用帶參函數(shù)(兩種方法)

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading;

    namespace 多線程2_帶參數(shù) {

    class Program

    {

    static void Main(string[] args)

    {

    Console.WriteLine(“Main線程開始”);

    Thread t = new Thread(new ParameterizedThreadStart(DoSomething));//注意ParameterizedThreadStart委托的定義形式

    t.Start(new string[]{“Hello”,“World”});

    Console.WriteLine(“Main線程繼續(xù)執(zhí)行”);

    Thread.Sleep(1000);

    t.Abort();

    t.Join();//阻塞Main線程,直到t終止

    Console.ReadKey();

    }

    static void DoSomething(object  s)

    {

    string[] strs = s as string[];

    while (true)

    {

    Console.WriteLine(“{0}--{1}”,strs[0],strs[1]);

    }

    }

    }

    }

    注意ParameterizedThreadStart委托的定義如下:

詳細(xì)講解在實(shí)例中.NET多線程執(zhí)行函數(shù)相關(guān)知識

    可見其對傳入函數(shù)的要求是:返回值void,參數(shù)個數(shù)1,參數(shù)類型object

    using System;

    using System.Collections.Generic; u

    sing System.Linq;

    using System.Text;

    using System.Threading;

    namespace 多線程2_帶參數(shù)2 {

    class Program

    {

    static void Main(string[] args)

    {

    Guest guest = new Guest()

    {

    Name=“Hello”, Age=99

    };

    Thread t = new Thread(new ThreadStart(guest.DoSomething));//注意ThreadStart委托的定義形式

 t.Start();

    Thread.Sleep(1000);

    t.Abort();

    t.Join();//阻塞Main線程,直到t終止

    Console.ReadKey();

    }

    }

    //

    class Guest

    {

    public string Name { get; set; }

    public int Age { get; set; }

    public void DoSomething()

    {

    while (true)

    {

    Console.WriteLine(“{0}--{1}”, Name, Age);

    }

    }

    }

    }

    這個還是使用ThreadStart委托,對方法進(jìn)行了一個封裝.

    兩種方法,可隨意選擇,第一種貌似簡潔一點(diǎn).

    3.線程同步

    線程同步的方法有很多很多種volatile、Lock、InterLock、Monitor、Mutex、ReadWriteLock...

    這里用lock說明問題:在哪里同步,用什么同步,同步誰?

    首先感受下不同步會出現(xiàn)的問題:

 

詳細(xì)講解在實(shí)例中.NET多線程執(zhí)行函數(shù)相關(guān)知識

    代碼就是下面的代碼去掉lock塊.

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading;

    namespace 多線程3_同步2 {

    class Program

    {

    static object obj = new object();//同步用

    static int balance = 500;

    static void Main(string[] args)

    {

    Thread t1 = new Thread(new ThreadStart(Credit));

    t1.Start();

    Thread t2 = new Thread(new ThreadStart(Debit));

    t2.Start();

    Console.ReadKey();

    }

    static void Credit()

    {

    for (int i = 0; i < 15; i++)

    {

    lock (obj)

    {

    balance += 100;

    Console.WriteLine(“After crediting,balance is {0}”, balance);

    }

    }

    }

    static void Debit()

    {

    for (int i = 0; i < 15; i++)

    {

    lock (obj)

    {

    balance -= 100;

    Console.WriteLine(“After debiting,balance is {0}”, balance);

    }

    }

    }

    }

    }

    小結(jié):多線程調(diào)用函數(shù)就是這樣.在Winform中,控件綁定到特定的線程,從另一個線程更新控件,不應(yīng)該直接調(diào)用該控件的成員,這個非常有用.

分享文章:詳細(xì)講解在實(shí)例中.NET多線程執(zhí)行函數(shù)相關(guān)知識
網(wǎng)頁網(wǎng)址:http://www.rwnh.cn/article28/jisicp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)營銷型網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化定制開發(fā)、網(wǎng)站維護(hù)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
红河县| 赞皇县| 竹北市| 开阳县| 海宁市| 铜鼓县| 循化| 莲花县| 昌都县| 龙游县| 盈江县| 正定县| 尚义县| 博野县| 包头市| 洛隆县| 元氏县| 犍为县| 定边县| 丹凤县| 桦南县| 新和县| 吴江市| 东海县| 永州市| 安康市| 昭平县| 衡水市| 河北省| 子洲县| 固原市| 颍上县| 定结县| 泰和县| 青河县| 林州市| 康乐县| 吉水县| 米泉市| 永城市| 台山市|