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

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

請問在C#中如何為一個有返回值的函數添加新線程?該怎么做呢?

請問在C#中如何為一個有返回值的函數添加新線程?該怎么做呢?

C C#
Cats萌萌 2022-01-05 11:07:47
string類型的返回值~
查看完整描述

2 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

public class A{    public string Test() => null;    public void Main()    {        //方式1:TAP 異步模式        Task<string> task = Task.Run(new Func<string>(Test));        //做些別的事情...然后獲取結果        task.Wait();        string result1 = task.Result;                 //方式2:APM 異步模式        Func<string> func = new Func<string>(Test);        IAsyncResult asyncResult = func.BeginInvoke(nullnull);        //做些別的事情...然后獲取結果        string result2 = func.EndInvoke(asyncResult);                 //方式3:線程        using (ManualResetEventSlim finishEvent = new ManualResetEventSlim(true))        {            string tempResult = null;            var thread = new Thread(() =>            {                tempResult = Test();                finishEvent.Set();            });            thread.Start();            //做些別的事情...然后獲取結果            finishEvent.Wait();            string result3 = tempResult;        }    }}



查看完整回答
反對 回復 2022-01-09
?
SMILET

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

class Params // 線程函數參數類型 { public int inparam = 0; // 表示一個傳入的值 public int outparam = 0; // 表示一個返回的值 }
var pm = new Params { inparam = 1 }; var thread = new Thread(param => { ((Params)param).outparam = 10; Thread.Sleep(2000); }); thread.Start(pm); thread.Join(); MessageBox.Show("傳出參數的值是 " + pm.outparam.ToString());

查看完整回答
反對 回復 2022-01-09
  • 2 回答
  • 0 關注
  • 328 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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