等待2个任务是否是线程安全的(其中一个任务正在等待另一个)?
public async Task<string> Operation1(){}
public async Task<string> Operation2( Task waitMe)
{
if(DoSomethingSuccess())
return "EarlySuccess";
var result = await waitMe;
return SomeSideEffectThat( result); // I read result
}
void async Task<string> MyMainFunction(){
Task<string> t1 = Operation1();
Task<string> t2 = Operation2( t1);
var result = await Task.WaitAny( new Task<string> { t1, t2});
if(results.Status == TaskStatus.RanToCompletion)
return result;
return "ExceptionOccurred";
}
我有兴趣从其中一个任务获得第一个结果,并最终执行副作用的第二个任务。假设副作用已经是线程安全的,我对“t2”“t1”和“结果”存储的竞争条件感兴趣。
我需要两个操作并行运行,这就是为什么我不用T2继续T1,只是T2需要T1来执行一些额外的操作
答案 0 :(得分:0)
为什么不使用ContinueWith
Task.Factory.StartNew(() => negate(5))
//you can go with another task here
.ContinueWith(antecendent => negate(antecendent.Result)) ;