Ja som beží dlho beží funkciu ako pozadie úlohou v mojom asp.net aplikácie. Pred úlohu dokončí hlavné vlákno východov (chcem to tak len vtedy, ak používam čakajú kľúčové slovo a vytvoriť hlavné vlákno počkajte, až pozadí úlohu dokončí, mám proxy chyba správou
Proxy Chyba
Proxy server dostal neplatnú odpoveď z nadradeného servera od pozadia úlohou je príliš dlhé.
Ale raz po dokončení úlohy ani som schopný obnoviť stránku, presmerovanie na rovnakej stránke alebo ani som schopný prepísať UI. Existuje nejaký spôsob, ako aktualizovať UI po hlavnej vlákno dokončí exekúcie.
Môj kód vyzerá takto:
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;
}
Vyššie async úloha čaká metóda nižšie ktorý je prítomný v inej triedy.
public bool Import()
{
// some operations here
return true;
}
Po tejto metódy dokončí kontrolu vrátiť chrbtom sa ImportThread()
ale kód napísaný tam prepísať UI nie je aktualizácia UI. Musím aktualizovať UI so stavom dovozu. A tiež z ImportThread
ovládanie nie je cesta späť na tlačidlo udalosť, metódu, príliš.
Prosím, pomôžte mi so žiadnym spôsobom aktualizácie UI stav importovať.
Poznámka: snažil som sa pomocou Redirect.Response
v ImportThread()
ak chcete obnoviť stránku, ale to nefunguje