asp.net - Visual Studio Asp.Net 开发服务器真的是多线程的吗?

标签 asp.net multithreading visual-studio cassini

我正在 VS2010 中调试一个在本地开发服务器(cassini?)中运行的 WebProject。其中一个 aspx 页面调用 ManualResetEvent.WaitOne(),另一个 Page aspx 页面调用 ManualResetEvent.Set()(在同一个 Global 对象上)来释放第一页。

当我查看 VS2010 中的线程列表时,似乎有很多工作线程。但是,Web 服务器在被 ManualResetEvent.WaitOne() 调用阻止时似乎停止处理任何内容。因此,除非 .WaitOne() 超时,否则 ManualResetEvent.Set() 不会加载。

这是怎么回事?

// Sample Code

Class SyncTest {

 private System.Threading.ManualResetEvent eConnected = 
       new System.Threading.ManualResetEvent(false);
 private bool isConnected;

public SyncTest ()
{
    this.isConnected = false;
}

public void SetConnected(bool state)
{
    isConnected = state;
    if (state)
        eConnected.Set();
    else
        eConnected.Reset();
}

public bool WaitForConnection(int timeout)
{
    return eConnected.WaitOne(timeout);

}
}

最佳答案

网络服务器一次仅处理每个用户的一页。

如果您希望一个用户请求的页面并行运行,则必须使页面(除一个之外)无 session 。

EnableSessionState="false" 放入页面的 @Page 指令中,使其成为无 session 状态。

这当然意味着您无法使用 session 数据来识别请求。如果您想知道谁请求了该页面,则必须将其连同请求一起发送。

关于asp.net - Visual Studio Asp.Net 开发服务器真的是多线程的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931901/

相关文章:

windows - 什么会导致 C++Builder/Delphi 线程和应用程序无法关闭?

c# - VS(2010) 中的强制文档

c++ - 一轮编译生成两个或多个输出文件

c# - 如何从 C# PageLoad 调用 Javascript?

c# - 我将如何着手创建一个全局通知类?

c# - Entity Framework Core - 非线程安全 - ServiceLifetime.Transient

c# - 在进程或线程之间划分工作?

python - 为 Python 安装 ggplot

c# - 如何从 ASP.NET 中的 Mysql 存储过程调用输出参数

c# - JQuery .each 函数