TOPページへ戻る PCページへ戻る TreeView一覧へ戻る
|
AutoRefresh有効時のメモリリークの修正 |
|
TShellTreeViewにはAutoRefreshプロパティがあります。AutoRefreshプロパティをTrueにすると、 新規にフォルダが作成/消去/名前変更された際にそれを即座に反映してくれます。しかし、AutoRefreshを有効にすると メモリリークが発生します。 この原因はTShellChangeThreadにあります。TShellChangeThreadはTShellChangeNotifierで使用され、 TShellChangeNotifierはTShellTreeViewで使用されています。このTShellChangeThreadでは、フォルダの変更を関知した 際にSetDirectoryOptions手続きを呼び出し、そこで監視用ハンドル(FWaitHandle)を一端終了します。その際に、 Create手続きで作成したMutexを破棄し忘れているためです。 ShellCtrls.pasを開き、 TShellChangeThread.SetDirectoryOptions手続きに下のように2行追加することでメモリリークが無くなります。
|
TOPページへ戻る PCページへ戻る TreeView一覧へ戻る