Jsem běží dlouhý běh funkce jako pozadí úkol v mém asp.net aplikace. Předtím, než úkol dokončí hlavní vlákno (já to tak chci pouze, protože když použiju čekají klíčové slovo, a aby hlavní vlákno počkat do pozadí úkol dokončí, jsem si proxy chyba se zprávou
Proxy Chyba
Server proxy obdržely neplatnou odpověď od nadřazeného serveru od pozadí úkol je příliš dlouhý
Ale jakmile po dokončení úkolu ani jsem schopen aktualizovat stránku tím, že přesměruje na stejnou stránku, nebo ani jedno jsem schopen přepsat UI. Existuje nějaký způsob, jak aktualizace uživatelského ROZHRANÍ po hlavní vlákno dokončí provedení.
Můj kód vypadá 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;
}
Výše asynchronní task čeká následující metodu, která je přítomna v jiné třídě.
public bool Import()
{
// some operations here
return true;
}
Poté, co tato metoda dokončí kontrolu vrátit se zády k ImportThread()
ale kód napsaný tam přepsat UI není aktualizace UI. Musím aktualizovat UI s status dovozu. A také z ImportThread
ovládání není cesty zpět na tlačítka klepněte na událost metoda.
Prosím, pomozte mi s případnými způsob, jak aktualizovat UI status dovozu.
Poznámka: snažil jsem se pomocí Redirect.Response
v ImportThread()
pro obnovení stránky, ale to nefungovalo