我换个方式提这个问题吧,免得被线程混淆了:
我先打开第2个页面,接着打开第1个页面。
问题是,为什么第一个页面必须等第二个页面返回了才能返回?
注:google被墙了,http.post会耗时十几秒。
实际的问题应该是这样的:我用asp.net写的网站,部署在本机。好像每次都只允许一个人访问。如果第一个人打开一个页面一直没有返回的话,第二个人打开任何页面也都处于等待状态。
new Entities()
这个Entities是你自己写的还是EF的?
再者,你这两句代码
var cnt=EFThreadSafeTest(30));
var cnt=EFThreadSafeTest(0));
如果这样写,一定是上面那句要先执行完才到下一句的,除非你不是这样写的。
@地月银光: 在 asp.net 中禁用会话。
@地月银光: 我假设你的猜测是正确的,你可以把你截图的两个页面放到不同的机器上去运行后来证实。
你的多线程方法呢?
你应该用多线程调用这个方法,
类似,
Thread t1 =new Thread(EFThreadSafeTest);
Thead t2 =new Thead(EFThreadSafeTest);
t1.Start();
t2.Start();
你的方法里,System.Threading.Thread.Sleep是在当前主线程中执行的,顺序调用当然要一个一个来。看一下多线程编程实践,CSDN、MSDN、博客园等讲这种示例的多的是。最好再学习下多线程编程常见原语,推荐看看经典.NET实践相关的书籍,通常都有最佳实践之类的章节。
显然EF是没有问题的.只是你写的DEMO有问题,
System.Threading.Thread.Sleep(sleepSeconds * 1000);这句是当前线程休眠. :(
请求的是一个线程所以必须排队~