在最初的代碼是這樣的:的IEnumerable VS IList的和奇怪的CrossThreadMessagingException調試
var processes = Process.GetProcesses().Where(p => p.MainWindowTitle.ToUpperInvariant().Contains("FOO"));
在調試過程中,如果我嘗試在即時窗口窗格中調用Count()
上processes
或檢查在當地人的「結果視圖」窗格中,我得到一個CrossThreadMessagingException
。如果我不調試但只是運行代碼,一切都很好。如果我將該集合轉換爲列表之前,將其分配給processes
並在調試期間使用Count
屬性也是很好的。
究竟是什麼CrossThreadMessagingException
和爲什麼IEnumerable
方法導致這樣的異常?
編輯:提供關於異常的更多信息。
消息:異常 'Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException' 發生
來源:Microsoft.VisualStudio.Debugger.Runtime
堆棧跟蹤:
在Microsoft.VisualStudio.Debugger。 Runtime.Main.ThrowCrossThreadMessageException(字符串formatString的)
在Microsoft.Win32.NativeMethods.GetWindowTextLength(HandleRef HWND)
在System.Diagnostics.Process.get_MainWindowTitle()
CrossThreadMessagingException說什麼? –
嗯,不尋常。調試器正在攔截本地Windows調用。什麼版本的Visual Studio這樣做?什麼樣的項目? 64位操作系統?遠程調試器? –