首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >引用异步任务而不启动它

引用异步任务而不启动它
EN

Stack Overflow用户
提问于 2018-10-23 03:31:05
回答 1查看 491关注 0票数 2

我有一个类,它需要一个在其他时刻异步调用的参数

因此,让我们说:

代码语言:javascript
复制
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,并在代码的其他部分运行它们。这个是可能的吗?到目前为止,我尝试了以下方法:

代码语言:javascript
复制
var ut = new UnitTask();
ut.Name = "Get People";
ut.JobToPerform = GenericJobs.ExecuteQuery("select * from people");

但这会立即执行任务,而不仅仅是引用该方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-23 03:37:01

这不是直接可能的。最好的解决方法是创建工厂:

代码语言:javascript
复制
ut.JobToPerformFactory = () => GenericJobs.ExecuteQuery("select * from people");

并且JobToPerformFactory的类型必须为Func<Task>。然后,可以随时调用工厂来启动任务。将该任务存储在某个地方(可能在ut对象上),以获得该操作的句柄,并可能稍后对其执行await操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52936526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档