亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多線程 C#:未按預期返回結果

多線程 C#:未按預期返回結果

C#
心有法竹 2022-12-24 14:43:41
我是新手,我在 C# 中有一個多線程實現。但結果返回錯誤。文件<number.txt>編號為 0 到 1000。但返回值是 1 到 1000。不是 0。請幫助我理解問題所在。謝謝你。static void Number(int number){    List<string> l_number = new List<string>(File.ReadAllLines("number.txt"));    Console.WriteLine(l_number[number]);}static void Main(string[] args){    List<Thread> l_thread = new List<Thread>();    int soThread = 10;    Thread thread1 = new Thread(delegate ()    {        var numnum = 0;        while (true)        {            for (int i = 0; i < soThread; i++)            {                Thread threadnew = new Thread(delegate ()                {                    //Console.WriteLine(numnum);                    Number(numnum);                });                threadnew.Start();                l_thread.Add(threadnew);                numnum++;                Thread.Sleep(100);            }            foreach (Thread item in l_thread)            {                item.Join();            }        }    });
查看完整描述

1 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

您正在捕獲 numnum- 它不是每個線程,并且時間意味著它不是捕獲時的值 - 它是線程被調度時的值;嘗試為每個范圍創建一個變量副本,即


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

{

    int copy = numnum;

    Thread threadnew = new Thread(delegate ()

    {

        //Console.WriteLine(copy);

        Number(copy);

    });


    // ...

}


查看完整回答
反對 回復 2022-12-24
  • 1 回答
  • 0 關注
  • 109 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號