Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果我从未使用TaskCompletionSource响应等待,该怎么办?_C#_Task Parallel Library_Async Await - Fatal编程技术网

C# 如果我从未使用TaskCompletionSource响应等待,该怎么办?

C# 如果我从未使用TaskCompletionSource响应等待,该怎么办?,c#,task-parallel-library,async-await,C#,Task Parallel Library,Async Await,我正在使用TaskCompletionSource创建一种异步用户界面事务 var tcs = new TaskCompletionSource<IAutoQuestionAnswer>(); a_question.AnswerSelected += (s, e) => tcs.TrySetResult(e.Item); _navigationService.Navigate(ViewNames.AutoQuestionView, a_question); return

我正在使用
TaskCompletionSource
创建一种异步用户界面事务

var tcs = new TaskCompletionSource<IAutoQuestionAnswer>();

a_question.AnswerSelected += (s, e) => tcs.TrySetResult(e.Item);

_navigationService.Navigate(ViewNames.AutoQuestionView, a_question);

return tcs.Task;
var tcs=new TaskCompletionSource();
a_question.AnswerSelected+=(s,e)=>tcs.TrySetResult(e.Item);
_导航服务。导航(ViewNames.AutoQuestionView,a_问题);
返回tcs.Task;
如果从未提出
AnswerSelected
,并且从未在TCS上调用
TrySetResult
,这会导致问题吗?我在
AutoQuestionView
UI上有一个home按钮,它根本不回答问题,而是将用户带回应用程序的开始。在这种情况下,
TrySetResult
将永远不会被调用。我已经检查了线程是否已建立,但没有。如果后面的代码从未被调用过,我完全没有问题,但我想确保它不会在以后咬到我。

框架假设任务会完成


正如@SLaks所指出的,如果不这样做,那么将导致内存泄漏。

那么等待任务的任何人都将永远不会恢复。这可能会导致内存泄漏。