0

3 秒または 4 秒後に来る可能性のあるデータをクライアント接続で待機させたい。

アイデアは、 Thread.sleep を作成して何度か再チェックすることでしたが、一部のクライアントは待機する必要がなく、一部のクライアントは待機するため、他のクライアントをスタックさせたくありません。

私は MVC を初めて使用するので、いくつかの提案をいただければ幸いです。

/edit このコードを使用する場合:

    public string weatherAsync(string city)
    {
        AsyncManager.OutstandingOperations.Increment();

        Task.Factory.StartNew(() =>
    {
        Thread.Sleep(TimeSpan.FromSeconds(10));
        AsyncManager.Parameters["output"] = DateTime.Now.TimeOfDay.ToString();
        AsyncManager.OutstandingOperations.Decrement();
    });

        return null;
    }

    public string weatherCompleted(string output)
    {
        return output;
    }

そして、最初のページが約10秒後に時間を返し、その後、2番目のページが出力を返すのにさらに10秒必要になると同時に、私のページを2回要求します:-/

これはコントローラーまたは Thread.sleep の問題ですか?

4

1 に答える 1

4

Thread.Sleep は他のユーザーをブロックしませんが、現在のスレッドをブロックするため、他のクライアントが再利用することはできません。
コントローラーで外部 Web サービスを呼び出している場合は、ASP.NET MVC の非同期 APi と ASP.NET MVC 4 の非同期メソッドを参照してください。

于 2012-08-30T09:09:09.260 に答える