首页 > 解决方案 > C# 任务作为参数传递给其他任务

问题描述

所以我目前有这样的代码:

//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) => { });

但是,它提示我:Delegate 'Action' does not take 1 arguments

我知道行动不需要争论。我需要一种方法来实现他的目标。

我有一个删除服务器上的接收器的任务——receiversDeletionTask;我需要在完成 receiversDeletionTask 后启动一个方法,该方法将从本地缓存中删除数据。而且我只需要在缓存清除方法完成时返回信息。

标签: c#asynchronoustask

解决方案


推荐阅读