Ссылка на асинхронную задачу без ее запуска - PullRequest
0 голосов
/ 22 октября 2018

У меня есть класс, которому нужен параметр, который нужно вызывать в другой момент асинхронно

, поэтому скажем:

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");

, но это сразу же выполняет задачу, а не просто ссылается на метод.

1 Ответ

0 голосов
/ 22 октября 2018

Это не возможно напрямую.Лучший обходной путь - это создать фабрики:

ut.JobToPerformFactory = () => GenericJobs.ExecuteQuery("select * from people");

И JobToPerformFactory должны иметь тип Func<Task>.Затем фабрика может быть вызвана в любое время для запуска задачи.Сохраните эту задачу где-нибудь (возможно, на объекте ut), чтобы получить дескриптор этой операции и, возможно, await позже.

...