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 秒后返回时间,第二个页面需要 10 秒以上才能返回输出:-/

这是我的控制器或 Thread.sleep 的问题吗?

4

1 回答 1

4

Thread.Sleep 不会阻塞其他用户,但会阻塞当前线程,因此它不能被其他客户端重用。
如果您正在调用控制器中的某些外部 Web 服务,请查看 ASP.NET MVC Asyncronous Methods In ASP.NET MVC 4中的异步 APi 。

于 2012-08-30T09:09:09.260 回答