2016-04-19 9 views
3

Приложение C#, которое я разработал, записывает 300 небольших (1k) файлов в локальную файловую систему (NTFS). В течение этого времени explorer.exe использует до 100% процессорного времени.Собственная программа записывает 300 небольших файлов. За это время explorer.exe затрачивает почти 100% процессорное время

Вещь, которые я уже разобрался:

  • Убедившись, что нет проводниковой окна открыты отображениями целевой папки
  • Исключены индексирование для целевой папки
  • Expluded индексирование для этого полного привода
  • Остановился и отключены службы «Поиск Windows» (SearchIndexer.exe)

Все это без эффекта.

Когда я использую Systinternals ProcessExplorer я вижу один занят нить explorer.exe, что государства большую часть времени:

ntdll.dll!RtIFreeUnicodeString+0x1370 

И его стек выглядеть следующим образом:

0 msvcrt.dll!memcpy+0x8a 
1 SHELL32.dll!Ordinal755+0x75c 
2 SHELL32.dll!PathYetAnotherMakeUniqueName+0x35316 
3 SHELL32.dll!ExtractIconExW+0xed8 
4 SHELL32.dll!ExtractIconW+0x98e5 
5 SHELL32.dll!SHChangeNotification_Lock+0x4179 
6 SHELL32.dll!DAD_SetDragImage+0x1018 
7 SHELL32.dll!DAD_SetDragImage+0x11ef 
8 SHCORE.dll!GetProcessReference+0x3f 
9 ntdll.dll!RtlDestroyHeap+0x317 
10 ntdll.dll!RtlFreeUnicodeString+0x17d5 
11 KERNEL32.DLL!BaseThreadInitThunk+0xd 
12 ntdll.dll!RtlUserThreadStart+0x34 

Что исследователь. exe здесь? Есть ли прямая зависимость между файловой системой и проводником? И как я могу предотвратить такое поведение?

+0

Там нет UI нить. Написание происходит в собственном потоке. Однако проблема также проявляется в соответствующем UnitTest, который только что сгенерировал все эти файлы. – Seven

+0

Вы можете использовать такой инструмент, как [Process Explorer] (https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx), чтобы узнайте, что на самом деле делают самые загруженные потоки Explorer.exe. –

+0

@Axel Kemper: Я добавляю некоторый вывод ProcessExplorer. В позиции 5 он говорит «SHChangeNotification_Lock». Исследователь уведомляет некоторые процессы о каждом новом файле? – Seven

ответ

3

Спасибо всем вашим комментариям. Я смог отслеживать потребляемое процессорное время для Защитника Windows, который был уведомлен о новых файлах explorer.exe

Исключая некоторые соответствующие справочники, там помогли.

Дело в том, что озадачило меня был тот факт, что процессор был поглощен исследователем, а не защитник ... В противном случае было бы более очевидно

+0

Приложения могут попросить проводника отслеживать изменения в каталоге. Вероятно, поэтому Explorer был вовлечен. –

 Смежные вопросы

  • Нет связанных вопросов^_^