smv*_*smv 6 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>>(() => this.GetAccessListOfMirror(mirrorId, null, "PROD"));
Run Code Online (Sandbox Code Playgroud)
如果是这样.如何获取语句的输出并使用它.
我之前使用过如下的声明.应用程序将等待直到我从线程获得输出.
var task = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(mirrorId, null,"DEV"));
return (List<AccessDetails>)task.ContinueWith(tsk => accdet = task.Result.ToList()).Result;
Run Code Online (Sandbox Code Playgroud)
Roe*_*elF 12
您可以让多个任务运行,并等待所有这些任务完成,如下所示:
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;
Run Code Online (Sandbox Code Playgroud)
如果您只想等待第一个完成,您可以使用Task.WaitAny例如.
您可以轻松运行多个任务
您可以使用任务结果MSDN 示例
您可以创建一个可以保存结果的对象,将其传递给任务并更新它应该看起来像这样
MyResultObeject res = new MyResultObject
var task = Task.Factory.StartNew<List<AccessDetails>>(() => this.GetAccessListOfMirror(res,mirrorId, null,"DEV"));
Run Code Online (Sandbox Code Playgroud)
只是不要忘记检查任务是否完成
| 归档时间: |
|
| 查看次数: |
10868 次 |
| 最近记录: |