1
我正在使用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
用户界面上有一个主页按钮,它根本不回答问题,但将用户带回到应用程序的开始处。在这种情况下,TrySetResult
将永远不会被调用。我已经检查过线程是否建立起来,而不是。如果后面的代码完全没有被调用,我完全没问题,但我想确保它不会在以后被我咬。
然后任何等待任务的人将永远不会恢复。这可能会导致内存泄漏。 – SLaks