我正在实现一些异步工作,但无法避免地感觉到我的代码变得非常丑陋,我想知道是否可以重写成更好的形式。
var tasks = new List<Task>();
var t1 = new Task<Guid>(() => DoSomeStuff<Xyz>(dtx, e1, M1));
var t2 = new Task<Guid>(() => DoSomeStuff<Qrs>(dtx, e2, M2));
var t3 = new Task<Guid>(() => DoSomeStuff<Abc>(dtx, e3, M3));
tasks.Add(t1);
tasks.Add(t2);
tasks.Add(t3);
tasks.ForEach(x => x.Start());
Task.WaitAll(tasks.ToArray<Task>());
returnDto.t1value = t1.Result;
returnDto.t2value = t2.Result;
returnDto.t3value = t3.Result;
为简洁起见,变量名称已更改,实际上有很多任务。 所有任务都可以独立运行,但必须在我们继续之前完成所有任务。
DoSomeStuff
看起来像这样:
private Guid DoSomeStuff<T>(DependentTransaction dtx, T thing, Func<T, Guid> method)