2016-04-19 2 views
3

Une application C# que j'ai développée écrit 300 petits fichiers (1k) dans un système de fichiers local (NTFS). Pendant ce temps, explorer.exe utilise jusqu'à 100% du temps CPU.Le programme personnel écrit 300 petits fichiers. Pendant ce temps explorer.exe dessine presque 100% du temps processeur

choses que je déjà triés:

  • Assured qu'aucune fenêtre de l'explorateur sont ouverts afficher le dossier cible
  • indexation exclue pour le dossier cible
  • indexation Expluded pour ce lecteur complet
  • Nous nous sommes arrêtés et désactivé les services "Recherche Windows" (SearchIndexer.exe)

sans effet.

Quand j'utilise Systinternals ProcessExplorer Je vois un fil occupé de explorer.exe qui indique la plupart du temps:

ntdll.dll!RtIFreeUnicodeString+0x1370 

Et son look pile comme ceci:

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 

Qu'est-ce que l'explorateur. exe faire ici? Existe-t-il une dépendance directe entre le système de fichiers et l'explorateur? Et comment puis-je empêcher ce comportement?

+0

Il n'y a pas thread d'interface utilisateur. L'écriture se passe dans un propre fil. Cependant, le problème se manifeste également dans le UnitTest correspondant, qui vient de générer tous ces fichiers – Seven

+0

Vous pouvez utiliser un outil comme [Process Explorer] (https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) pour Découvrez ce que les threads les plus occupés de Explorer.exe sont en train de faire. –

+0

@Axel Kemper: J'ajoute une sortie de ProcessExplorer. En position 5, il est indiqué "SHChangeNotification_Lock". L'explorateur notifie-t-il certains processus à propos de chaque nouveau fichier? – Seven

Répondre

3

Merci à tous vos commentaires. J'ai été capable de suivre le temps CPU consommé à Windows Defender qui a été notifié de nouveaux fichiers par explorer.exe

En excluant certains répertoires pertinents, il a aidé.

Ce qui me laisse perplexe était le fait que la CPU a été consommé par l'explorateur, et non par le défenseur ... Sinon, il aurait été plus évident

+0

Les applications peuvent demander à l'explorateur de surveiller un répertoire pour les changements. C'est probablement pourquoi Explorer s'est impliqué. –