Почему вы не можете запустить задачу и поймать ее другим способом? - PullRequest
0 голосов
/ 15 мая 2019

Почему невозможно запустить задачу и ждать ее другим способом? Или есть способ поймать результат задачи. Так вы знаете, что это завершено?

как например (на основе бритвы PageModel):

public Task OnGet()
{
    var runningTask = StartLongProccessingTask(); //returns Task that creates a file
}

//this gets fired from a button with `asp-page-handler="DownloadFile"`
public Task OnPostDownloadFile()
{
    await runningTask;
    return File(".\Example.docx");
}

Я пытался сохранить задачу в глобальной переменной, но безрезультатно.

1 Ответ

0 голосов
/ 15 мая 2019

У вас есть некоторые заблуждения здесь:

  1. Прежде всего, runningTask - это переменная внутри метода OnGet(), это означает, что он находится в другом контексте, и ваш метод OnPostDownloadFile() не знает эту переменную.

  2. Во-вторых, вы не можете использовать ключевое слово await внутри синхронной задачи, эта задача должна быть асинхронной, чтобы вы могли использовать ключевое слово await, и чего вам следует ожидать, так это возврата метод OnGet()

При условии, что я написал выше,

Что вам нужно сделать, так это сделать вас OnPostDownload() Методом асинхронной задачи и дождаться возврата задачи OnGet(). Поэтому вам также необходимо вернуть что-то из OnGet() задачи

...