我有这样的代码(在此处进行了简化),等待完成任务:
var task_completion_source = new TaskCompletionSource<bool>();
observable.Subscribe(b =>
{
if (b)
task_completion_source.SetResult(true);
});
await task_completion_source.Task;
这个想法是订阅并等待布尔值流中的true
。这将完成“任务”,我可以在await
之后继续进行。
然而,我想取消等待,而不是取消订阅。我想传递取消令牌(以某种方式)给task_completion_source
,这样当我取消令牌源时,await
就会继续进行。
更新:CancellationTokenSource
与此代码无关,我只有来自它的令牌。
task_completion_source.SetCanceled
有什么问题吗?请注意,这假定您正确处理了任务取消 :) - Luaanawait
等待任务完成。 - astrowalker