Estou executando uma longa funcionar como tarefa de plano de fundo no meu asp.net aplicação. Antes que a tarefa é concluída a thread principal sai (eu quero desse jeito só, já que se eu usar o aguardam palavra-chave e fazer a thread principal aguarde até que a tarefa em segundo plano é concluído, eu fico com mensagem de erro de proxy
Erro De Proxy
O proxy de servidor recebeu uma resposta inválida do servidor montante desde a tarefa de plano de fundo é muito longo
Mas uma vez que após a conclusão da tarefa, nem eu sou capaz de atualizar a página redirecionando para a mesma página ou nem eu sou capaz de substituir a INTERFACE do usuário. Existe alguma forma de INTERFACE de atualização após a thread principal conclusão da execução.
Meu código é este:
protected void btnImport_Click(object sender, EventArgs e)
{
var task = ImportThread();
if (task.IsCompleted)
{
DisplaySuccess("Import success");
}
else
DisplayError("Import failed");
}
private async Task<bool> ImportThread()
{
try
{
var success = await Task<bool>.Run(() => new Manager().Import().ConfigureAwait(false);
if (task.IsCompleted)
{
DisplaySuccess("Import success");
}
else
{
DisplayError("Import failed");
}
return true;
}
Acima assíncrono tarefa aguarda o método abaixo que está presente em outra classe.
public bool Import()
{
// some operations here
return true;
}
Após este método for concluído o controle de retorno de costas para ImportThread()
mas o código escrito não para substituir a INTERFACE do usuário não atualizar a INTERFACE do usuário. Eu preciso update de INTERFACE do usuário com o estado de importação. E também a partir de ImportThread
o controle não está indo de volta para o evento de clique de botão método também.
Por favor, ajude-me com a maneira como fazer o update de INTERFACE do usuário o status de importação.
Nota: eu tentei usar Redirect.Response
no ImportThread()
para atualizar a página, mas não funcionou