Итак, у меня в настоящее время есть такой код:
//THIS IS A PART OF A METHOD
// ...
// Add a logic after the request has finished
(this.cache[RequestType.DeleteReceiver] as Task<Tuple<ServiceResponseCode, bool>>).ContinueWith((receiversDeletionTask) =>
{
receiversDeletionTask.Wait();
// Check that response was ok
if (receiversDeletionTask.Result.Item1 == ServiceResponseCode.Ok && receiversDeletionTask.Result.Item2 == true)
{
ReceiverModel deletedReceiver = this.fetchedReceivers.Find(receiver => receiver.Id == id);
this.fetchedReceivers.Remove(deletedReceiver);
this.fetchedReceiversIndexes.RemoveAt(this.fetchedReceivers.IndexOf(deletedReceiver));
foreach (int index in this.fetchedReceiversIndexes)
{
this.fetchedReceiversIndexes[index] = index;
}
}
});
return await (this.cache[RequestType.DeleteReceiver] as Task<Tuple<ServiceResponseCode, bool>>);
В этой реализации я возвращаю первое задание, и вызывающий абонент начинает работать после того, как первое задание завершается, но я не хочу, чтобы вызывающий ожидалдля задачи ContinueWith.
Итак, я попытался изменить рефакторинг на это:
Task receiversDeletionTask = this.cache[RequestType.DeleteReceiver] as Task<Tuple<ServiceResponseCode, bool>>;
Task receiverDeletionFromCacheTask = new Task((receiversDeletionTask) => { });
Но, это побуждает меня: Делегат «Действие» не принимает 1 аргумент
Я знаю, что действие не требует спора.Мне нужен способ, как сделать так, чтобы это произошло.
У меня есть задача, которая удаляет приемник на сервере - receiversDeletionTask;Мне нужно после завершения receiversDeletionTask запустить метод, который удалит данные из локального кэша.И мне нужно возвращать информацию только тогда, когда метод очистки кэша завершится.