我的MVC控制器需要延迟

时间:2012-08-30 09:04:44

标签: c# asp.net-mvc multithreading

我希望客户端连接等待3或4秒后可能出现的某些数据。

我的想法是制作一个Thread.sleep并重新检查一些但我不想卡住其他客户端,因为有些客户不必等待,但有些客户端会这样做。

我是MVC的新手,希望你能给我一些建议。

/编辑 如果我使用此代码:

    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的问题?

1 个答案:

答案 0 :(得分:4)

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