C# 以这种方式缓慢地从Web服务器返回数据可以吗?
这是我的MVC控制器中的一种方法:C# 以这种方式缓慢地从Web服务器返回数据可以吗?,c#,asp.net-mvc,multithreading,network-programming,httpwebresponse,C#,Asp.net Mvc,Multithreading,Network Programming,Httpwebresponse,这是我的MVC控制器中的一种方法: public async Task RecorderInfo() { Stream stream = Response.OutputStream; for (int i = 0; i < 100; i++) { byte[] data = new byte[100]; await stream.WriteAsync(data, 0, data.Length); // Send data to th
public async Task RecorderInfo()
{
Stream stream = Response.OutputStream;
for (int i = 0; i < 100; i++)
{
byte[] data = new byte[100];
await stream.WriteAsync(data, 0, data.Length); // Send data to the client.
await Task.Delay(10000); // Wait for some event.
}
}
public异步任务记录器info()
{
Stream=Response.OutputStream;
对于(int i=0;i<100;i++)
{
字节[]数据=新字节[100];
wait stream.WriteAsync(data,0,data.Length);//向客户端发送数据。
等待任务。延迟(10000);//等待某个事件。
}
}
很明显,我想在任何时候都将数据返回给HTTP客户机,因此,关于这种方法存在一些问题:
我认为更传统的方法是使用javascript轮询服务器。这种方法也被称为长轮询 如果您在IIS中托管,此文档将非常有用。我想指出,它建议不要执行长时间运行的任务 如果您感到好奇,IIS线程池的最大线程数为256。此线程池的设计方式无法很好地处理长时间运行的任务
如果您有许多请求,您的线程池将很快填满。客户端不是基于web浏览器的,轮询可能非常频繁。这将使用不必要的请求处理加载Web服务器。