2015-04-06 160 views
1

我在我的應用程序IShellFolder.EnumObjects - 異步在Windows資源管理器

一,我實現了的IShellFolder接口的實現Shell Namespace Extensions,並且IShellFolder2
一切正常excep探險時調用EnumObjects我想顯示在瀏覽器上的進度條以異步的方式。 今天當我在EnumObjects函數中返回資源管理器IEnumIDList時,瀏覽器調用IEnumIDList.Next。在那個函數中,我的代碼會執行大量的操作,可能需要大約20秒,在那段時間explorer被卡住了,它不響應。 我看到的是,如果我返回到資源管理器〜200項,並且比大規模的操作資源管理器將顯示進度欄,並會有所反應。

任何人都知道如何強制瀏覽器響應並顯示進度條而不返回虛擬物品?

+0

無法確認您擁有的問題。在我的NSE中,IEnumIDList被創建並始終在單獨的線程中使用,並且UI總是響應。您使用的操作系統版本是什麼? – 2015-04-06 15:41:46

+0

我正在使用Windows 7 x64。你是否試圖卡住Next函數並用鼠標移動瀏覽器的當前窗口? – Beno 2015-04-06 17:19:47

+0

我也使用Win7 x64。我可以在長時間下一次執行時移動和調整資源管理器窗口大小。 – 2015-04-06 17:23:29

回答

1

Windows 7總是使用單獨的線程進行項目枚舉。在你的情況下,資源鎖定是UI凍結的原因。

+0

嗨丹尼斯,我發現了這個問題,就像你說的那樣。主線程詢問文件的圖標。該行爲是同步的,一旦我釋放該調用它的作品,謝謝:) – Beno 2015-04-09 18:56:28