Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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# 是否从Asp.net线程池中获取线程?_C#_Asp.net_Multithreading_Webforms - Fatal编程技术网

C# 是否从Asp.net线程池中获取线程?

C# 是否从Asp.net线程池中获取线程?,c#,asp.net,multithreading,webforms,C#,Asp.net,Multithreading,Webforms,当我运行Asp.net cs文件页时: 正在创建线程T=新线程。。。或者使用BeginInvoke 该线程是否从Asp.net保留线程池中获取 编辑 本质上,.NET维护一个可以处理页面的线程池 请求。当收到新请求时,ASP.NET将获取 可用线程,并使用它处理整个页面。同样的 线程实例化页面,运行事件处理代码,然后 返回呈现的HTML。如果ASP.NET快速接收请求 速度快于它能为他们服务的速度未经处理的请求将在 排队。如果队列已满,ASP.NET将被迫拒绝额外的 出现503“服务器不可用”错

当我运行Asp.net cs文件页时:

正在创建线程T=新线程。。。或者使用BeginInvoke

该线程是否从Asp.net保留线程池中获取

编辑 本质上,.NET维护一个可以处理页面的线程池 请求。当收到新请求时,ASP.NET将获取 可用线程,并使用它处理整个页面。同样的 线程实例化页面,运行事件处理代码,然后 返回呈现的HTML。如果ASP.NET快速接收请求 速度快于它能为他们服务的速度未经处理的请求将在 排队。如果队列已满,ASP.NET将被迫拒绝额外的 出现503“服务器不可用”错误的请求

我不想影响Asp.net请求线程

当您使用新线程时,它实际上创建了一个与线程池无关的新线程

使用Delegate.BeginInvoke时,委托将在.Net线程池上执行。没有特殊的ASP.Net线程池

通常,最好是在短时间运行任务时使用线程池,在需要运行长时间运行任务时手动创建线程。另一个选择是使用.NET4.0任务,它为您提供了更好、一致的API。CPU限制的任务通常在ThreaPool上运行,但是您可以指定一个LongRunning选项,以便它们创建自己的线程

一般来说,即使在ASP.NET应用程序中,您可能也不必担心线程池会被饿死,因为这些限制足够高,至少在.NET 4.0中是如此,而在以前的版本中则稍低一些。如果确实遇到这些问题,可以尝试增加线程池中的线程数,也可以使用单独的线程池,这需要一些代码,但您应该能够在internet上找到相应的代码。如果使用任务,使用自定义线程池会更容易,因为这意味着只需切换TaskScheduler。

使用新线程时,它实际上会创建一个与线程池无关的新线程

使用Delegate.BeginInvoke时,委托将在.Net线程池上执行。没有特殊的ASP.Net线程池

通常,最好是在短时间运行任务时使用线程池,在需要运行长时间运行任务时手动创建线程。另一个选择是使用.NET4.0任务,它为您提供了更好、一致的API。CPU限制的任务通常在ThreaPool上运行,但是您可以指定一个LongRunning选项,以便它们创建自己的线程


一般来说,即使在ASP.NET应用程序中,您可能也不必担心线程池会被饿死,因为这些限制足够高,至少在.NET 4.0中是如此,而在以前的版本中则稍低一些。如果确实遇到这些问题,可以尝试增加线程池中的线程数,也可以使用单独的线程池,这需要一些代码,但您应该能够在internet上找到相应的代码。如果使用任务,使用自定义线程池会更容易,因为这意味着只需切换TaskScheduler。

hi svick!:请看我的编辑。我想我想解决这些问题…这样我就可以使用新线程| | BeginInvoke-并且不会伤害Asp.net请求线程…对吗?如果使用BeginInvoke,可能会伤害Asp.net请求线程。但是你可能不应该担心它,除非它真的成为你的问题。斯维克,那么新线程呢?它会伤害ASP.NET请求线程吗?@RoyiNamir,它不会使用线程池线程,因此不会导致503错误,如果这是您要问的。我的回答不是很清楚吗?嗨,斯维克请看我的编辑。我想我想解决这些问题…这样我就可以使用新线程| | BeginInvoke-并且不会伤害Asp.net请求线程…对吗?如果使用BeginInvoke,可能会伤害Asp.net请求线程。但是你可能不应该担心它,除非它真的成为你的问题。斯维克,那么新线程呢?它会伤害ASP.NET请求线程吗?@RoyiNamir,它不会使用线程池线程,因此不会导致503错误,如果这是您要问的。我的回答不是很清楚吗?