c# – 如何从Task.Factory.StartNew <>获取结果?
发布时间:2020-12-15 18:30:48 所属栏目:百科 来源:网络整理
导读:如果我可以并行运行多个Task.Factory.StartNew语句,请告诉我. 有点像这样 var task = Task.Factory.StartNewListAccessDetails(() = this.GetAccessListOfMirror(mirrorId,null,"DEV"));var task1 = Task.Factory.StartNewListAccessDetails(() = this.GetAc
如果我可以并行运行多个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,"PROD")); 如果是这样.如何获取语句的输出并使用它. 我之前使用过如下的声明.应用程序将等待直到我从线程获得输出. var task = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(mirrorId,"DEV")); return (List<AccessDetails>)task.ContinueWith(tsk => accdet = task.Result.ToList()).Result; 解决方法
您可以让多个任务运行,并等待所有这些任务完成,如下所示:
var task = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(mirrorId,"DEV")); var task1 = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(mirrorId,"PROD")); var allTasks = new Task[]{task,task1}; Task.WaitAll(allTasks); var result = task.Result; var result1 = task1.Result; 如果您只想等待第一个完成,可以使用Task.WaitAny作为示例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |