2010-07-13 62 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

相關問題