TaskCompletionSource обычно стоит использовать, когда нужно создать Task, но нет долго-работающего синхронного метода, который мы можем обернуть.
Например,
public Task<bool> StartServiceAsync()
{
// вызываем метод, который отрабатывает быстро,
// но возвращает результат не сразу, а через неопределенное время
// в своем событии _someService.ServiceStarted
_someService.StartAsync();
if (_serviceTcs != null) _serviceTcs.SetCanceled();
_serviceTcs = new TaskCompletionSource<bool>();
return _serviceTcs.Task;
}
private void OnServiceStarted(object sender, bool e)
{
// При срабатывании события от сервиса завершаем ожидающую задачу
if (_serviceTcs != null) _serviceTcs.SetResult(e);
}
В Вашем случае, скорее всего, реализация через TaskCompletionSource будет лишним усложнением