Uzun süredir çalışan bir işlevi arka plan görevi olarak çalıştırıyorum. asp.net başvuru. Görev tamamlanmadan önce ana iş parçacığı çıkar (yalnızca bu şekilde olmasını istiyorum, çünkü await anahtar kelimesini kullanırsam ve ana iş parçacığının arka plan görevi tamamlanana kadar beklemesini sağlarsam, mesajla proxy hatası alıyorum
Proxy Hatası
Proxy sunucusu, arka plan görevi çok uzun olduğu için yukarı akış sunucusundan geçersiz bir yanıt aldı
Ancak görev tamamlandıktan sonra ne aynı sayfaya yönlendirerek sayfayı yenileyebiliyorum ne de kullanıcı arayüzünü geçersiz kılabiliyorum. Ana iş parçacığı yürütmeyi tamamladıktan sonra kullanıcı arayüzünü güncellemenin herhangi bir yolu var mı?
Kodum şöyle:
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;
}
Yukarıdaki zaman uyumsuz görev, aşağıda başka bir sınıfta bulunan yöntemi beklemektedir.
public bool Import()
{
// some operations here
return true;
}
Bu yöntem tamamlandıktan sonra denetim geri döner ImportThread()
ancak Uı'yi geçersiz kılmak için orada yazılan kod uı'yi güncellemiyor. Kullanıcı arayüzünü içe aktarma durumuyla güncellemem gerekiyor. Ve aynı zamanda ImportThread
denetim, düğme tıklatma olayı yöntemine de geri dönmüyor.
İthalat UI durum Güncellemesi için herhangi bir şekilde bana yardım et lütfen.
Not: Kullanmayı denedim Redirect.Response
içinde ImportThread()
sayfayı yenilemek için, ancak bu işe yaramadı