Io sono in esecuzione di una funzione con esecuzione prolungata come attività in background nel mio asp.net applicazione. Prima del termine dell'operazione il thread principale uscite (voglio che sia così, perchè se io uso la parola chiave in attesa e rendere il thread principale aspettare fino a sfondo termine dell'operazione, ho il proxy con il messaggio di errore
Errore Di Proxy
Il proxy server ha ricevuto una risposta non valida dal monte del server, dato che il compito di sfondo è troppo lungo
Ma una volta, dopo il completamento del compito, né sono in grado di aggiornare la pagina reindirizzando alla pagina stessa o nè sono in grado di modificare l'interfaccia utente. C'è qualche modo per aggiornare UI dopo il thread termina l'esecuzione.
Il mio codice va come questa:
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;
}
Sopra async task attende il metodo seguito, che è presente in un'altra classe.
public bool Import()
{
// some operations here
return true;
}
Dopo questo metodo completa il controllo torna effettua per ImportThread()
ma il codice scritto per eseguire l'override di UI non è l'aggiornamento dell'interfaccia utente. Ho bisogno di aggiornare la UI con lo stato di importazione. E anche da ImportThread
il controllo non è tornando all'evento click del pulsante metodo di troppo.
Please help me con l'aggiornamento UI lo stato di importazione.
Nota: ho provato ad utilizzare Redirect.Response
in ImportThread()
per aggiornare la pagina, ma che non ha funzionato