我有一个类,它需要一个在其他时刻异步调用的参数
因此,让我们说:
public class UnitTask {
public string Name{ get; set; }
public Task JobToPefrorm { get; set;}
}
public static class GenericJobs {
public static async Task ExecuteQuery(string query) {
return await CodeToExecuteQueryAsync(query);
}
}
因此,这段代码背后的想法是生成多个UnitTasks,并在代码的其他部分运行它们。这个是可能的吗?到目前为止,我尝试了以下方法:
var ut = new UnitTask();
ut.Name = "Get People";
ut.JobToPerform = GenericJobs.ExecuteQuery("select * from people");
但这会立即执行任务,而不仅仅是引用该方法。
发布于 2018-10-23 03:37:01
这不是直接可能的。最好的解决方法是创建工厂:
ut.JobToPerformFactory = () => GenericJobs.ExecuteQuery("select * from people");
并且JobToPerformFactory
的类型必须为Func<Task>
。然后,可以随时调用工厂来启动任务。将该任务存储在某个地方(可能在ut
对象上),以获得该操作的句柄,并可能稍后对其执行await
操作。
https://stackoverflow.com/questions/52936526
复制相似问题