2016-04-27 8 views
0

Ich habe eine Methode, die eine Schleife durchläuft, die ziemlich lange dauern kann, da Daten von einer API zurückerhalten werden müssen. Was ich tun möchte, ist eine Nachricht am Frontend anzuzeigen, die erklärt, wie das System während jeder Schleife fortschreitet. Gibt es eine Möglichkeit, das Frontend während der Verarbeitung zu aktualisieren?Aktualisieren des Front-Ends während des Postbacks

 public static void GetScreenshot(List<string> urlList, List<DesiredCapabilities> capabilities, String platform, Literal updateNote) 
     { 
     foreach (String url in urlList) 
     { 
      String siteName = new Uri(url).Host; 

      String dir = AppDomain.CurrentDomain.BaseDirectory+ "/Screenshots/" + siteName + "/" + DateTime.Now.ToString("yyyy-MM-dd_HH-mm"); 
      foreach (DesiredCapabilities cap in capabilities) 
      { 
      String saveDirectory = ""; 
      if (platform == "btnGenDesktopScreens") 
      { 
       saveDirectory = dir + "/" + cap.GetCapability("os") + "-" + cap.GetCapability("os_version") + "-" + cap.GetCapability("browser") + cap.GetCapability("browser_version"); 
      } 
      else if(platform == "btnMobile") 
      { 
       saveDirectory = dir + "/" + cap.GetCapability("platform") + "" + cap.GetCapability("device") + "-" + cap.GetCapability("browserName"); 
      } 
      updateNote.Text += "<br/>" + cap.GetCapability("platform") + " - " + cap.GetCapability("device") + "-" + cap.GetCapability("browserName"); 
//I'd like to display a message here 
      TakeScreenshot(url, cap, saveDirectory); 
//I'd like to display a message here 
      } 
     } 
     } 

Hat jemand eine Methode dafür gefunden?

Antwort

0

Je nachdem, wie Sie das Feedback an den Benutzer zurückgeben, können Sie dies möglicherweise tun, indem Sie in einer Schleife HttpResponse.Flush verwenden, um Teile der HTML-Antwort ein Stück nach dem anderen an den Benutzer zu senden. Siehe https://msdn.microsoft.com/en-us/library/system.web.httpresponse.flush(v=vs.100).aspx

+0

Hallo @ADyson, danke für die Antwort. Ich habe das hinzugefügt, nachdem ich den Text des Literals aktualisiert habe, aber ohne Erfolg. – Spitfire2k6

+0

Haben Sie sichergestellt, dass die Ausgabepufferung aktiviert ist, wie im Beispiel im Link? – ADyson

+0

Auch ich bin nicht davon überzeugt, es wird funktionieren, wenn Sie versuchen, die gesamte Ausgabe in ein Literal zu setzen. Sie sollten besser ein neues Literal für jede Schleife erstellen und jedes Mal mit Response.Write in die Ausgabe schreiben und dann die Flush-Methode aufrufen. Oder Sie schreiben den HTML-Code direkt in die Antwort, ohne ein Literal als Vermittler zu verwenden. – ADyson

Verwandte Themen