Sunt rulează un timp de funcționare funcționa ca sarcină de fundal în asp.net aplicație. Inainte de sarcina completeaza firul principal ieșirile (că așa vreau eu numai, deoarece dacă am folosi așteaptă de cuvinte cheie și de a face firul principal, așteptați până sarcină de fundal completeaza, am proxy de eroare cu mesajul
Proxy De Eroare
Proxy server a primit un răspuns invalid din amonte, server de fundal sarcina este prea lung
Dar o dată după finalizarea sarcinii nici nu sunt în măsură să reîmprospătați pagina prin redirecționarea la aceeași pagină sau nici nu sunt capabil să suprascrie UI. Există vreo modalitate de a actualiza UI după firul principal completeaza execuție.
Codul meu merge ca aceasta:
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;
}
Cele de mai sus asincron sarcina așteaptă metoda de mai jos, care este prezent într-o altă clasă.
public bool Import()
{
// some operations here
return true;
}
După această metodă se completează de control se întoarcă cu spatele la ImportThread()
dar codul scris acolo pentru a suprascrie UI nu este actualizarea UI. Am nevoie pentru a actualiza UI cu statut de import. Și, de asemenea, de la ImportThread
de control nu este de gând înapoi să faceți clic pe butonul eveniment metoda prea.
Va rog ajutati-ma cu orice mod de a actualiza UI starea de import.
Notă: am încercat, folosind Redirect.Response
în ImportThread()
pentru a actualiza pagina, dar nu a mers