2014-04-18 2 views
2

Je suis nouveau sur ASP.net et je suis confronté à un problème de tâches asynchrones.Comment exécuter une tâche asynchrone dans asp.net 4.0

Voici ce que je voudrais faire. Disons que j'ai une page Web nommée WebPage1 avec un bouton Button1.

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Button1.Text = "Working...."; 
     System.Threading.Thread.Sleep(20000); 
     Button1.Text = "Finish !"; 
    } 

Je voudrais être en mesure de passer à WebPage2 sans perdre la tâche que j'ai commencé avec le bouton 1. Alors, quand je retourne à WebPage1 après 20 secondes, je devrais être capable de lire « Terminer! » sur le bouton.

Est-ce possible? Je souligne que je dois faire avec .net 4.0

J'ai alread regardé

mais je peux » t trouver un moyen de résoudre mon problème

Merci d'avance!

+0

Pour votre information: https://github.com/StephenCleary/AspNetBackgroundTasks – Noseratio

Répondre

2

D'abord, vous devrez importer.

using System.Threading.Tasks; 

Votre gestionnaire de boutons devrait ressembler à ceci.

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Button1.Text = "Working...."; 
     Task.Factory.StartNew(() => 
     { 
       //Do Stuff 
     }); 
    } 

Vous aurez besoin d'avoir un moyen de savoir quand la tâche est terminée, de sorte que vous pouvez le vérifier lorsque vous revenez sur la page de chargement. Ce serait probablement une valeur de base de données de quelque sorte. Cela vous permettrait de dire à l'utilisateur si la tâche est terminée ou non.

0

Pour la publication asynchrone, vous pouvez essayer d'utiliser le panneau de mise à jour pour l'implémenter.

est Ci-dessous un exemple simple que vous pouvez faire référence à:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
<asp:UpdatePanel ID="Updt1" runat="server"> 
     <ContentTemplate> 
      <asp:Label ID="lblError" runat="server" Text="Label"></asp:Label> 
      <asp:Button ID="btn" runat="server" Text="Click Update" onclick="btn_Click"/> 
      <asp:UpdateProgress ID="UpdtProgress" DisplayAfter="1" AssociatedUpdatePanelID="Updt1" runat="server"> 
       <ProgressTemplate> 
        Please Wait 
       </ProgressTemplate> 
      </asp:UpdateProgress> 
     </ContentTemplate> 
    </asp:UpdatePanel> 


protected void btn_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       lblError.Visible = false; 
       lblError.Text = "Start"; 
       System.Threading.Thread.Sleep(6000); 
       lblError.Text = "End"; 
       lblError.Visible = true; 
      } 
      catch (Exception ex) 
      { 
       lblError.Text = ex.Message; 
       lblError.Visible = true; 
      } 

     } 
Questions connexes