Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从Task.Factory.StartNew获得结果<>;?_C#_Asp.net_Multithreading - Fatal编程技术网

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的。