c# - 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 后启动一个方法,该方法将从本地缓存中删除数据。而且我只需要在缓存清除方法完成时返回信息。
解决方案
推荐阅读
- python - Python检测变量首先实例化的模块
- python - 部署模型时在 azure ml 入口脚本中导入数据和 python 脚本
- css - 为什么圆锥梯度的结果随着远离中心变得越来越模糊?
- mongodb - 在 ReactiveMongo 0.18.8 中,如何在单个命令中更新多个具有不同值的文档?
- python - 将多处理输出附加到 Python 中的数据框
- c# - 为什么 Npgsql 会反转 tsquery 数据?
- batch-processing - 7-Zip 通过批处理文件解压缩选定的文件
- ios - R.Swift - 无法调用非函数类型 StringResource 的值
- elasticsearch - 如何解决超集中的“elasticsearch 错误:‘字节’”?
- c++ - 为什么C++优化器在删除同一个指针时使用不同的delete