2010-07-13 98 views
1

我有一个简单的应用程序,其中包含一个按钮以便开始记录,并且基本上我将消息记录到数据库。该应用程序已经设置为将消息记录到数据库。所以,我试图在我的机器上运行我的应用程序,但同时使用两种不同的浏览器(例如,谷歌浏览器和Internet Explorer)。我点击这两个浏览器的按钮,但奇怪的是threadID对于两个浏览器都是一样的。但是,当我在同一浏览器上多次运行该应用程序时,它会在每次执行它时提供一个新的threadID。为什么? 因为我期待的threadID是不同的,当我从不同的浏览器同时运行应用程序,因为执行时间不同。为什么threadID与我同时在不同浏览器上运行我的应用程序时相同?

+0

这是一个ASP.NET Web应用程序吗? – 2010-07-13 08:31:26

+0

是的,它的ASP.NET应用程序 – Precious 2010-07-13 08:40:59

回答

5

ThreadID与浏览器无关;它与运行服务器代码的线程有关。也就是说,aspnet工作进程(或任何正在运行你正在登录的代码片段)。

+0

好吧..基本上我所做的就是用谷歌浏览器运行应用程序,然后不用关闭那个我用IE运行应用程序。然后我从另一个浏览器中单击按钮,但threadId保持不变。所以基本上,我应该理解你所说的“只要我在同一台机器上运行应用程序,即使执行时间不同,它也会运行相同的线程。” (注意:我将谷歌ASPNET工作进程我以前还没有听说过) – Precious 2010-07-13 08:48:08

+1

@Precious:一旦服务器请求完成(这将发生在浏览器完全显示结果之前),它可以自由地提供另一个请求。只要有并发请求正在被服务器处理(尽管很多机器有少量或许多不同的客户机),就会使用新的线程。 – Richard 2010-07-13 09:00:21

+0

@Richard。感谢您的澄清。 – Precious 2010-07-14 07:52:26

1

服务器重新使用线程来处理传入的请求(不管您使用的是哪种浏览器,您使用何种计算机登录等)。我可以将浏览器指向您的服务器,并获得与您所看到的相同的ThreadId。无法保证(据我所知),您的代码将跨多个请求在不同的线程上运行。也没有保证(据我所知),你的代码将跨越多个请求在同一个线程上运行。

+0

感谢您的澄清 – Precious 2010-07-14 07:50:23

+0

不是问题! :) – Pwninstein 2010-07-14 12:27:10

相关问题