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