为了账号安全,请及时绑定邮箱和手机立即绑定

请问在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 关注
  • 288 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信