Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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
Visual Studio Asp.Net开发服务器真的是多线程的吗?_Asp.net_Multithreading_Visual Studio_Cassini - Fatal编程技术网

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

Visual Studio Asp.Net开发服务器真的是多线程的吗?,asp.net,multithreading,visual-studio,cassini,Asp.net,Multithreading,Visual Studio,Cassini,我正在VS2010中调试一个在本地开发服务器(cassini?)上运行的WebProject。其中一个aspx页面调用ManualResetEvent.WaitOne(),另一个页面aspx页面调用ManualResetEvent.Set()(在同一全局对象上)以释放第一个页面 当我查看VS2010中的线程列表时,似乎有很多工作线程。但是,web服务器似乎在被ManualResetEvent.WaitOne()调用阻止时停止处理任何内容。因此,除非.WaitOne()超时,否则不会加载Manua

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

当我查看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);

}
}

web服务器一次只处理来自每个用户的一个页面

如果希望从一个用户请求的页面并行运行,则必须使页面(一个除外)无会话

将页面的
EnableSessionState=“false”
放入
@Page
指令中,使其无会话


这当然意味着您无法使用会话数据识别请求。如果你想知道是谁请求了页面,你必须在请求中发送它。

你不应该真正停止主执行线程。这在您启动的工作线程上运行良好。同样,如果您想在会话之间进行对话,也可以使用应用程序对象提供更好的机制。@SimonHalsey Main exec线程不受此影响。这确实与会话锁有关。谢谢!IIS也是这样吗?