C# 如何从Task.Factory.StartNew获得结果<>;?
请告知我是否可以并行运行多个C# 如何从Task.Factory.StartNew获得结果<>;?,c#,asp.net,multithreading,C#,Asp.net,Multithreading,请告知我是否可以并行运行多个Task.Factory.StartNew语句 像这样的东西 var task = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(mirrorId, null,"DEV")); var task1 = Task.Factory.StartNew<List<AccessDetails>>(() => thi
Task.Factory.StartNew
语句
像这样的东西
var task = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(mirrorId, null,"DEV"));
var task1 = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(mirrorId, null, "PROD"));
var task=task.Factory.StartNew(()=>this.GetAccessListOfMirror(mirrorId,null,“DEV”);
var task1=Task.Factory.StartNew(()=>this.GetAccessListOfMirror(mirrorId,null,“PROD”);
如果是的话。如何获取语句的输出并使用它
我以前使用过下面这样的语句。应用程序将等待,直到我从线程获得输出
var task = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(mirrorId, null,"DEV"));
return (List<AccessDetails>)task.ContinueWith(tsk => accdet = task.Result.ToList()).Result;
var task=task.Factory.StartNew(()=>this.GetAccessListOfMirror(mirrorId,null,“DEV”);
return(List)task.ContinueWith(tsk=>accdet=task.Result.ToList()).Result;
您可以轻松运行多个任务
您可以使用任务结果
您可以创建一个对象,该对象可以保存您的结果,然后将其传递给任务并进行更新
应该是这样的
MyResultObeject res = new MyResultObject
var task = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(res,mirrorId, null,"DEV"));
MyResultObeject res=新建MyResultObject
var task=task.Factory.StartNew(()=>this.GetAccessListOfMirror(res,mirrorId,null,“DEV”);
只是别忘了检查任务是否已完成您可以让多个任务运行,并按如下方式等待所有任务完成:
var task = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(mirrorId, null,"DEV"));
var task1 = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(mirrorId, null, "PROD"));
var allTasks = new Task[]{task, task1};
Task.WaitAll(allTasks);
var result = task.Result;
var result1 = task1.Result;
var task=task.Factory.StartNew(()=>this.GetAccessListOfMirror(mirrorId,null,“DEV”);
var task1=Task.Factory.StartNew(()=>this.GetAccessListOfMirror(mirrorId,null,“PROD”);
var allTasks=新任务[]{Task,task1};
Task.WaitAll(所有任务);
var result=task.result;
var result1=task1.Result;
如果只想等待第一个任务完成,可以使用
Task.WaitAny
不确定我是否正确回答了您的问题,但如果您想等到执行完成,您可以使用Task.wait()然后获取Task.Result。@Mecaveli会阻止直到完成,如果您正在处理单个任务,则无需先调用Task.wait()。Thx进行更正。他正在处理多重任务——本来是要做Task.WaitAll的。