Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以这种方式缓慢地从Web服务器返回数据可以吗?_C#_Asp.net Mvc_Multithreading_Network Programming_Httpwebresponse - Fatal编程技术网

C# 以这种方式缓慢地从Web服务器返回数据可以吗?

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

这是我的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 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客户机,因此,关于这种方法存在一些问题:

  • 长时间保持web响应安全吗?当对该操作发出多个请求时,某些线程池是否会耗尽可用线程
  • 我会遇到什么陷阱吗
  • 您将如何做到这一点,您将如何离散地通知HTTP侦听器某个事件或向其发送一些数据

  • 我认为更传统的方法是使用javascript轮询服务器。这种方法也被称为长轮询

    如果您在IIS中托管,此文档将非常有用。我想指出,它建议不要执行长时间运行的任务

    如果您感到好奇,IIS线程池的最大线程数为256。此线程池的设计方式无法很好地处理长时间运行的任务


    如果您有许多请求,您的线程池将很快填满。

    客户端不是基于web浏览器的,轮询可能非常频繁。这将使用不必要的请求处理加载Web服务器。