2010-08-30 89 views
0

我想調試一個使用WPF的.NET 3.5應用程序。在我們的大多數機器上,應用程序啓動正常,但我們有一臺應用程序在第一個.Show()上掛起的機器。該過程似乎全CPU使用率旋轉,並最終(如果我附加了調試器)我得到:掛在啓動WPF應用程序

託管調試助手「ContextSwitchDeadlock」已檢測到「d一個問題:\項目... \ foobar.exe」。 附加信息:CLR無法從COM上下文0x1aa168轉換到COM上下文0x1a9ff8達60秒。擁有目的地上下文/公寓的線程很可能要麼進行非抽取等待,要麼處理非常長的運行操作而不抽取Windows消息。這種情況通常會對性能產生負面影響,甚至可能導致應用程序無法響應或內存使用量不斷累積。爲了避免這個問題,所有的單線程單元(STA)線程都應該使用抽取等待原語(比如CoWaitForMultipleHandles),並在長時間運行的操作中定期抽取消息。

我對上面的任何轉錄錯誤表示歉意,我無法複製粘貼文本。

發生這種情況的系統正在運行Windows XP SP3。我們的其他系統使用Windows XP SP3,我們的軟件運行良好。

在掛點的調用堆棧看起來是這樣的:

[外部代碼]
PresentationNative_v0300.dll FetchRun()+ 0×90字節 [email protected]()+ 0x71字節
[email protected]()+ 0x12c字節
[email protected]()+ 0x85字節 foobar.exe!FooBar.Window1.Window1()線109個+ 0×10字節C# [外部代碼]
[email protected]()+ 0×28字節
[email protected]()+ 0xb7字節
[email protected]()+字節的0xDC
user32.dll中!_DispatchMessageW @ 4()+ 0xf字節 MSCorEE.dll中!__ CorExeMain @ 0()+ 0x32字節
[email protected]()+ 0x3a4e字節
MSCorEE.dll中!__ CorExeMain_Exported @ 0()+ 0x8中字節
KERNEL32 .dll!_BaseProcessStart @ 4()+ 0x23 bytes

有沒有人有任何想法可以導致這一點?

我會盡快嘗試重新安裝.NET 3.5,但說實話,我們正在抓緊吸管。

回答