asp.net chama WebMethod de Javascript assíncrono

Estou tentando criar uma página asp.net (c #) que atualiza alguns textos de estado a cada segundo. Agora eu implementei um botão que chama outro PageMethod que reinicia algo e demora um pouco. O problema é que, quando eu chamo o PageMethod de reinicialização, o PageMethod de atualização não pode ser atualizado enquanto o método de reinicialização continuar ...

Eu escrevi um pequeno exemplo para mostrar o que quero dizer:

WebMethods na minha página:

    [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";
    }

os elementos html a serem atualizados:

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

o Pagemethod chama:

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);
            }

Nota: The Up, date também é chamada a cada segundo após o término, apenas para ver como funciona

Para esclarecer: quero que o PageMethods seja executado independentemente do que o outro PageMethod tenha terminad

Eu também voei sobre alguns links como:http: //esskar.wordpress.com/2009/06/30/implementing-iasyncresult-aka-namedpipeclientstream-beginconnect

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

Mas eu não acho que isso é o que eu preciso (?) E eu realmente não sei como chamar isso de Javascript (BeginXXX e Endxxx)

*EDIT: *

Em relação a Massimiliano Peluso, o código js ficaria assim:

        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);
        }

ota: quando eu executo a página com os novos js, existe exatamente o mesmo problema de antes: O método Update não pode fazer nada até que o método Restart seja concluíd

questionAnswers(2)

yourAnswerToTheQuestion