我們正在制作一個 WPF 應用程序,它使用 FileSystemWatcher 來監(jiān)視對用戶選擇的目錄的更改并將更改輸出到 DataGrid。在我的 MainWindow() 構(gòu)造函數(shù)中,我將我的 DataGrid 綁定到我通過 ItemSource 調(diào)用 _eventList 的列表。當 OnChanged 或 OnRenamed FileSystemWatcher 事件發(fā)生時,我的應用程序成功地將四組字符串(更改類型、受影響的文件、路徑、最后修改日期)寫入我調(diào)用的數(shù)組 _event 中。這構(gòu)成了一個事件。然后,在創(chuàng)建這個 _event 數(shù)組之后,我嘗試通過調(diào)用一個單獨的方法 SetThreadSafe() 來處理我的“調(diào)用線程無法訪問這個對象,因為另一個線程擁有它”,跨線程異常。這就是我相信事情對我來說崩潰的地方。在我的 SetThreadSafe 方法中發(fā)生的不需要的行為是我的 DataGrid 顯示它包含在它的 Items 屬性中,條目對應于每個事件。DataGrid.Items 中的每個索引都綁定到我的 _eventList 同義詞(應該如此),并且在此 List/Items 屬性的每個索引內(nèi)是數(shù)組的每個索引中的正確值。因此,一,我的 DataGrid 顯示它在調(diào)試器的 Items 屬性中包含正確的數(shù)據(jù),但行不會填充到我的 DataGrid 中。兩個,有時,不是全部,SetThreadSafe 方法觸發(fā)它的 IF 和它 ELSE 條件,因此在我的 DataGrid.Items/_eventList 中添加一個重復的條目。我不再收到跨線程異常,但我覺得這里顯然缺少某些東西。
- 1 回答
- 0 關(guān)注
- 279 瀏覽
添加回答
舉報
0/150
提交
取消