2012-04-23 99 views
0

我有一個ASP.NET應用程序,我想使用VB6組件。我知道我必須使用ASPCOMPAT標籤。有什麼需要做的VB6代碼,以使其線程安全?.NET使用VB6 COM組件

我已經運行了一些測試,它似乎工作完美,但是我已閱讀關於有問題的開發人員的評論,但評論沒有詳細闡述。是否需要對VB6代碼進行任何操作以確保它是線程安全的?這看起來太簡單了。此外,我還將ASPCONFIG標記放置在一個頁面上 - 即使用COM組件的頁面。

我已經使用tlbimport工具在Visual Studio中導入組件,該工具將.NETwrapper放置在COM對象的周圍。

回答

1

VB6代碼的線程安全性在很大程度上取決於它的寫法。編寫COM的一個特殊「子集」是爲了隱藏VB6時代涉及基於COM開發的大部分硬件管道,部分隱藏的內容是線程管理(多線程公寓,單線程公寓等)和VB6運行時在底層處理線程。因此,如果你遵守規則,線程安全或多或少都會爲你照顧。在大多數情況下,如果您試圖深入研究獨立的線程管理,例如調用Windows API函數以在VB6/COM「沙箱」之外創建線程,那麼您正在玩火,並且沒有足夠的保護。 NET方面將使其「線程安全」。這樣做打破了VB6故意試圖隱藏的所有內部線程管理/編組/ /代碼。這幾乎是非託管(VB6/COM)和託管代碼(.NET)世界之間差異的本質。

希望有所幫助。

+0

謝謝。 VB6 DLL使用類和無線程相對較好地構建。因此,根據你所說的,不應該有問題。我只想在ASP.NET應用程序中重用一個函數。 – w0051977 2012-04-24 12:43:40