簡體   English   中英

為什么忽略STAThread屬性?

[英]Why STAThread attribute is ignored?

與奇怪的行為......

與奇怪的行為

大家好!

任何人都可以解釋我,它怎么可能?

謝謝,亞歷克斯。

我還發現鏈接的答案有點難以接受,特別是因為OP承認,他並沒有在實際上具有相同的名稱作為EXE的DLL。 我也無法責備它。

然而,這個解釋有一些可信度,我注意到Fusion在被要求搜索程序集時做了一些奇怪的事情。 您可以使用Fuslogvw.exe查看此信息,啟用“記錄所有綁定”選項。 奇怪的是,它會搜索既是一個DLL,並在詢問加載程序集的EXE。 這是測試控制台應用程序的日志條目的片段:

LOG: Attempting download of new URL file:///C:/projects/ConsoleApplication3/bin/Debug/ConsoleApplication3.DLL.
LOG: Attempting download of new URL file:///C:/projects/ConsoleApplication3/bin/Debug/ConsoleApplication3/ConsoleApplication3.DLL.
LOG: Attempting download of new URL file:///C:/projects/ConsoleApplication3/bin/Debug/ConsoleApplication3.EXE.
LOG: Assembly download was successful. Attempting setup of file: C:\projects\ConsoleApplication3\bin\Debug\ConsoleApplication3.exe
LOG: Entering run-from-source setup phase.

向右滾動以查看它首先查找DLL的方式。 它是如何在與程序集同名的子目錄中查找的。 這里有DLL Hell的奇怪和充足的潛力。 使用故障模式,CLR以某種方式探測[STAThread]屬性的錯誤程序集。 還解釋了連接反饋文章中奇怪的“關閉外部”解雇,Fusion由Microsoft的Windows組所有,而不是DevDiv。

Anyhoo,跡象表明只需重命名輸出文件即可解決您的問題。 項目+屬性,構建選項卡,輸出路徑設置。

我不是調試器內部工作的專家,但我認為監視窗口中顯示的值是由Visual Studio線程評估的,而不是應用程序的主線程(在屏幕截圖中暫停)。

因此我沒有看到矛盾,監視窗口只是說Visual Studio線程是MTA。

嘗試使用Debug.Write來顯示主線程的單元狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM