позволить ScriptManager.RegisterStartupScript обновить пользовательский интерфейс, прежде чем дождаться Задача - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь показать индикатор выполнения из кода, когда пользователь нажимает кнопку « Пуск ». « Start » - это асинхронная задача c, которая асинхронно сохраняет данные в базе данных, а затем перенаправляет на следующую страницу.

Итак, перед вызовом ожидающей задачи сохранения я вызвал javascript, используя ScriptManager.RegisterStartupScript, который показывает индикатор выполнения, прежде чем перейти к длинной задаче сохранения в базе данных. однако, этот javascript не будет вызван, пока задача ожидания не будет завершена!

В приведенном ниже коде, если я удаляю код перенаправления в конце задачи, индикатор выполнения отображается после завершения задачи сохранения. Как заставить пользовательский интерфейс обновиться перед вызовом задачи await?

    protected async void btnStart_Click(object sender, EventArgs e)
    {
        ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "script", "showProgress();", true);
        var model = await Controllers.CompanyController.Save(txtEmail.Text, txtFlashEmail.Text);
        Response.Redirect(GetRouteUrl("Company", new { CompanyId = model.Id }));
    }
...