Je suis en cours d'exécution d'une fonction longue durée en tâche de fond dans mon asp.net application. Avant que la tâche se termine le thread principal des sorties (je veux de cette façon seulement, car si j'utilise le mot clé await et de faire des thread principal attendre jusqu'au fond de fin de la tâche, je reçois proxy erreur avec le message
Erreur De Proxy
Le serveur proxy a reçu une réponse invalide à partir d'un serveur en amont depuis la tâche en arrière-plan est trop long
Mais une fois après l'achèvement de la tâche, ni que je suis en mesure d'actualiser la page en redirigeant vers la même page ou aucun des deux, je suis en mesure de remplacer l'INTERFACE utilisateur. Est-il possible de mettre à jour l'INTERFACE utilisateur après le thread principal de l'exécution terminée.
Mon code ressemble à ceci:
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;
}
Le ci-dessus async tâche qui attend la méthode ci-dessous, qui est présent dans une autre classe.
public bool Import()
{
// some operations here
return true;
}
Après cette méthode est terminée, le contrôle de renvoyer dos à ImportThread()
mais le code écrit pour remplacer l'INTERFACE utilisateur n'est pas la mise à jour de l'INTERFACE utilisateur. J'ai besoin de mettre à jour l'INTERFACE utilisateur avec l'état d'importation. Et aussi à partir de ImportThread
le contrôle n'est pas de revenir à l'événement clic du bouton de la méthode de trop.
S'il vous plaît aidez-moi avec toutes les mise à jour de l'INTERFACE utilisateur de l'état d'importation.
Note: j'ai essayé d'utiliser Redirect.Response
dans ImportThread()
pour actualiser la page, mais cela ne fonctionne pas