System.IO.FileSystemWatcher-klass

Anmärkning

Den här artikeln innehåller ytterligare kommentarer till referensdokumentationen för det här API:et.

Använd FileSystemWatcher för att titta efter ändringar i en angiven katalog. Du kan titta efter ändringar i filer och underkataloger för den angivna katalogen. Du kan skapa en komponent för att titta på filer på en lokal dator, en nätverksenhet eller en fjärrdator.

Om du vill hålla utkik efter ändringar i alla filer anger du Filter egenskapen till en tom sträng ("") eller använder jokertecken ("*.*"). Om du vill titta på en specifik fil anger du Filter egenskapen till filnamnet. Om du till exempel vill titta efter ändringar i filen MyDoc.txtanger du Filter egenskapen till "MyDoc.txt". Du kan också titta efter ändringar i en viss typ av fil. Om du till exempel vill titta efter ändringar i textfiler anger du Filter egenskapen till "*.txt".

Det finns flera typer av ändringar som du kan titta efter i en katalog eller fil. Du kan till exempel titta efter ändringar i Attributes, LastWrite datum och tid, eller Size för filer eller kataloger. Detta görs genom att ställa in egenskapen NotifyFilter på ett av NotifyFilters värdena. Mer information om vilken typ av ändringar du kan titta på finns i NotifyFilters.

Du kan titta efter namnbyte, borttagning eller skapande av filer eller kataloger. Om du till exempel vill titta efter namnbyte av textfiler anger du Filter egenskapen till "*.txt" och anropar WaitForChanged metoden med en Renamed angiven parameter.

Windows-operativsystemet meddelar din komponent om filändringar i en buffert som skapats av FileSystemWatcher. Om det finns många ändringar på kort tid kan bufferten flöda över. Detta gör att komponenten förlorar kontrollen över ändringar i katalogen, och den ger endast aviseringar. Att öka storleken på bufferten InternalBufferSize med egenskapen är dyrt, eftersom det kommer från icke-sidiga minne som inte kan växlas ut till disk, så håll bufferten så liten men ändå tillräckligt stor för att inte missa några filändringshändelser. För att undvika ett buffertöverflöd, använd egenskaperna NotifyFilter och IncludeSubdirectories så att du kan filtrera bort oönskade ändringsmeddelanden.

En lista över initiala egenskapsvärden för en instans av FileSystemWatcherfinns i FileSystemWatcher konstruktorn.

Att tänka på när du använder FileSystemWatcher klassen:

  • Dolda filer ignoreras inte.
  • I vissa system FileSystemWatcher rapporterar ändringar i filer med det korta filnamnsformatet 8.3. En ändring av "LongFileName.LongExtension" kan till exempel rapporteras som "LongFil~. Lon".
  • Den här klassen innehåller ett länkbehov och ett arvskrav på klassnivå som gäller för alla medlemmar. En SecurityException utlöses när antingen den omedelbara anroparen eller den härledda klassen inte har fullständig förtroendebehörighet. Mer information om säkerhetskrav finns i Länkkrav.
  • Den maximala storleken som du kan ange för InternalBufferSize egenskapen för övervakning av en katalog över nätverket är 64 kB.

Kopiera och flytta mappar

Operativsystemet och FileSystemWatcher objektet tolkar en utklipps- och inklistringsåtgärd eller en flyttåtgärd som en namnbytesåtgärd för en mapp och dess innehåll. Om du klipper ut och klistrar in en mapp med filer i en mapp som övervakas FileSystemWatcher rapporterar objektet endast mappen som ny, men inte dess innehåll eftersom de i princip bara har bytt namn.

Om du vill få ett meddelande om att innehållet i mapparna har flyttats eller kopierats till en bevakad mapp, ange händelsehanterarmetoderna OnChanged och OnRenamed som föreslås i följande tabell.

Händelsehanterare Händelser som hanteras Utför
OnChanged Changed, , CreatedDeleted Rapportera ändringar i filattribut, skapade filer och borttagna filer.
OnRenamed Renamed Visa en lista över gamla och nya sökvägar för omdöpta filer och mappar och expandera rekursivt om det behövs.

Händelser och buffertstorlekar

Observera att flera faktorer kan påverka vilka filsystemsändringshändelser som genereras, enligt beskrivningen i följande:

  • Vanliga filsystemåtgärder kan generera fler än en händelse. När en fil till exempel flyttas från en katalog till en annan kan flera OnChanged och vissa OnCreated och OnDeleted händelser aktiveras. Att flytta en fil är en komplex åtgärd som består av flera enkla åtgärder, vilket ger upphov till flera händelser. På samma sätt kan vissa program (till exempel antivirusprogram) orsaka ytterligare filsystemhändelser som identifieras av FileSystemWatcher.
  • Det FileSystemWatcher kan titta på diskar så länge de inte växlas eller tas bort. FileSystemWatcher Genererar inte händelser för CD-skivor och DVD-skivor, eftersom tidsstämplar och egenskaper inte kan ändras. Fjärrdatorer måste ha en av de nödvändiga plattformarna installerade för att komponenten ska fungera korrekt.

Observera att en FileSystemWatcher kan missa en händelse när buffertstorleken överskrids. Följ dessa riktlinjer för att undvika saknade händelser:

  • Öka buffertstorleken genom att ange egenskapen InternalBufferSize .
  • Undvik att titta på filer med långa filnamn eftersom ett långt filnamn bidrar till att fylla bufferten. Överväg att byta namn på dessa filer med kortare namn.
  • Håll din händelsehanteringskod så kort som möjligt.