如果我从不使用TaskCompletionsource响应等待的响应,该怎么办?



我正在使用TaskCompletionSource创建一种异步用户界面交易。

var tcs = new TaskCompletionSource<IAutoQuestionAnswer>();
a_question.AnswerSelected += (s, e) => tcs.TrySetResult(e.Item);
_navigationService.Navigate(ViewNames.AutoQuestionView, a_question);
return tcs.Task;

如果AnswerSelected永远不会升级并且TrySetResult从未在TCS上调用,这会引起问题吗?我在AutoQuestionView UI上有一个主页按钮,该按钮根本没有回答问题,但将用户带回了应用程序的开始。在这种情况下,TrySetResult永远不会被调用。我已经检查了线程是否累积,并且没有。如果以下的代码从未被调用,我完全可以,但是我想确保以后不会咬我。

您不应该这样做。该框架假定任务将完成。

正如@slaks所指出的,如果您不这样说,则会导致内存泄漏。

最新更新