asp.net rufen Sie WebMethod von Javascript asynchrone

Ich versuche zu bauen, ein asp.net(c#) die Seite, die updates einige Staatliche Texte in jeder Sekunde.
Jetzt habe ich implementiert eine Schaltfläche, ruft eine andere PageMethod die Neustarts etwas und dauert eine Weile. Das problem ist, dass ich beim Aufruf der Neustart PageMethod , das update PageMethod kann nicht aktualisiert werden, solange der Neustart-Methode verläuft...

Schrieb ich ein kleines Beispiel, um zu zeigen, was ich meine:

WebMethods meiner Seite:

    [WebMethod]
    public static string Update()
    {
        //return "a" to see when the Update PageMethod succeeded
        return "a";
    }

    [WebMethod]
    public static string Restart()
    {
        //the restart will take a while
        Thread.Sleep(2000);
        //return "a" to see when the Restart PageMethod succeeded
        return "a";
    }

html-Elemente aktualisieren:

<p id="update" style="float:left;"></p>
<p id="restart" style="float:right;"></p>

die Pagemethod Aufrufe:

callUpdate()
            function callUpdate() {
                PageMethods.Update(function (text) {
                    //itself+text from pagemethod
                    $('#update').text($('#update').text() + text);
                });
                setTimeout(callUpdate, 1000);
            }

            callRestart()
            function callRestart() {
                PageMethods.Restart(function (text) {
                    //itself+text from pagemethod
                    $('#restart').text($('#restart').text() + text);
                });

                setTimeout(callRestart, 1000);
            }

Hinweis: Das Update ist auch als jeder zweite, nachdem es fertig, nur um zu sehen, wie es funktioniert

Zu klären: ich möchte die PageMethods zu führen unabhängige, die andere PageMethod beendet hat.

Geflogen bin ich auch über einige links, wie z.B.:
http://esskar.wordpress.com/2009/06/30/implementing-iasyncresult-aka-namedpipeclientstream-beginconnect/

http://msdn.microsoft.com/en-us/library/aa480516.aspx

Aber ich glaube nicht, dass dies ist, was ich brauche (?)
Und ich weiß wirklich nicht, wie zu nennen, die von Javascript (BeginXXX und Endxxx)

*EDIT: *

Bezüglich Massimiliano Peluso, den js-code würde wie folgt Aussehen:

        callUpdate()
        function callUpdate() {
            $.ajax({
                type: "POST",
                url: "ServicePage.aspx/Update",
                data: "{}",
                contentType:
                "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    $('#update').text($('#update').text() + msg.d);
                }
            });
            setTimeout(callUpdate, 1000);
        }

        callRestart()
        function callRestart() {
            $.ajax({
                type: "POST",
                url: "ServicePage.aspx/Restart",
                data: "{}",
                contentType:
                "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    $('#restart').text($('#restart').text() + msg.d);
                }
            });
            setTimeout(callRestart, 1000);
        }

Hinweis: wenn ich die Seite mit der neuen js, es ist genau das gleiche problem wie vorher: Die Update-Methode kann nichts tun, bis der Neustart-Methode abgeschlossen ist.

InformationsquelleAutor Sonnenhut | 2011-08-23

Schreibe einen Kommentar