FileSystemWatcher.Changed Gebeurtenis
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Treedt op wanneer een bestand of map in de opgegeven Path map wordt gewijzigd.
public:
event System::IO::FileSystemEventHandler ^ Changed;
[System.IO.IODescription("FSW_Changed")]
public event System.IO.FileSystemEventHandler Changed;
public event System.IO.FileSystemEventHandler Changed;
[<System.IO.IODescription("FSW_Changed")>]
member this.Changed : System.IO.FileSystemEventHandler
member this.Changed : System.IO.FileSystemEventHandler
Public Custom Event Changed As FileSystemEventHandler
Gebeurtenistype
- Kenmerken
Voorbeelden
In het volgende voorbeeld wordt de Changed gebeurtenis gebruikt om het bestandspad naar de console weer te geven wanneer het bekeken bestand wordt gewijzigd.
using System;
using System.IO;
namespace MyNamespace
{
class MyClassCS
{
static void Main()
{
using var watcher = new FileSystemWatcher(@"C:\path\to\folder");
watcher.NotifyFilter = NotifyFilters.Attributes
| NotifyFilters.CreationTime
| NotifyFilters.DirectoryName
| NotifyFilters.FileName
| NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.Security
| NotifyFilters.Size;
watcher.Changed += OnChanged;
watcher.Created += OnCreated;
watcher.Deleted += OnDeleted;
watcher.Renamed += OnRenamed;
watcher.Error += OnError;
watcher.Filter = "*.txt";
watcher.IncludeSubdirectories = true;
watcher.EnableRaisingEvents = true;
Console.WriteLine("Press enter to exit.");
Console.ReadLine();
}
private static void OnChanged(object sender, FileSystemEventArgs e)
{
if (e.ChangeType != WatcherChangeTypes.Changed)
{
return;
}
Console.WriteLine($"Changed: {e.FullPath}");
}
private static void OnCreated(object sender, FileSystemEventArgs e)
{
string value = $"Created: {e.FullPath}";
Console.WriteLine(value);
}
private static void OnDeleted(object sender, FileSystemEventArgs e) =>
Console.WriteLine($"Deleted: {e.FullPath}");
private static void OnRenamed(object sender, RenamedEventArgs e)
{
Console.WriteLine($"Renamed:");
Console.WriteLine($" Old: {e.OldFullPath}");
Console.WriteLine($" New: {e.FullPath}");
}
private static void OnError(object sender, ErrorEventArgs e) =>
PrintException(e.GetException());
private static void PrintException(Exception? ex)
{
if (ex != null)
{
Console.WriteLine($"Message: {ex.Message}");
Console.WriteLine("Stacktrace:");
Console.WriteLine(ex.StackTrace);
Console.WriteLine();
PrintException(ex.InnerException);
}
}
}
}
Imports System.IO
Namespace MyNamespace
Class MyClassVB
Shared Sub Main()
Using watcher = New FileSystemWatcher("C:\path\to\folder")
watcher.NotifyFilter = NotifyFilters.Attributes Or
NotifyFilters.CreationTime Or
NotifyFilters.DirectoryName Or
NotifyFilters.FileName Or
NotifyFilters.LastAccess Or
NotifyFilters.LastWrite Or
NotifyFilters.Security Or
NotifyFilters.Size
AddHandler watcher.Changed, AddressOf OnChanged
AddHandler watcher.Created, AddressOf OnCreated
AddHandler watcher.Deleted, AddressOf OnDeleted
AddHandler watcher.Renamed, AddressOf OnRenamed
AddHandler watcher.Error, AddressOf OnError
watcher.Filter = "*.txt"
watcher.IncludeSubdirectories = True
watcher.EnableRaisingEvents = True
Console.WriteLine("Press enter to exit.")
Console.ReadLine()
End Using
End Sub
Private Shared Sub OnChanged(sender As Object, e As FileSystemEventArgs)
If e.ChangeType <> WatcherChangeTypes.Changed Then
Return
End If
Console.WriteLine($"Changed: {e.FullPath}")
End Sub
Private Shared Sub OnCreated(sender As Object, e As FileSystemEventArgs)
Dim value As String = $"Created: {e.FullPath}"
Console.WriteLine(value)
End Sub
Private Shared Sub OnDeleted(sender As Object, e As FileSystemEventArgs)
Console.WriteLine($"Deleted: {e.FullPath}")
End Sub
Private Shared Sub OnRenamed(sender As Object, e As RenamedEventArgs)
Console.WriteLine($"Renamed:")
Console.WriteLine($" Old: {e.OldFullPath}")
Console.WriteLine($" New: {e.FullPath}")
End Sub
Private Shared Sub OnError(sender As Object, e As ErrorEventArgs)
PrintException(e.GetException())
End Sub
Private Shared Sub PrintException(ex As Exception)
If ex IsNot Nothing Then
Console.WriteLine($"Message: {ex.Message}")
Console.WriteLine("Stacktrace:")
Console.WriteLine(ex.StackTrace)
Console.WriteLine()
PrintException(ex.InnerException)
End If
End Sub
End Class
End Namespace
Opmerkingen
De Changed gebeurtenis wordt gegenereerd wanneer wijzigingen worden aangebracht in de grootte, systeemkenmerken, laatste schrijftijd, laatste toegangstijd of beveiligingsmachtigingen van een bestand of map in de map die wordt bewaakt.
Note
Veelvoorkomende bestandssysteembewerkingen kunnen meerdere gebeurtenissen veroorzaken. Wanneer een bestand bijvoorbeeld van de ene map naar de andere wordt verplaatst, kunnen er meerdere OnChanged en enkele OnCreated gebeurtenissen OnDeleted worden gegenereerd. Het verplaatsen van een bestand is een complexe bewerking die bestaat uit meerdere eenvoudige bewerkingen, waardoor meerdere gebeurtenissen worden gegenereerd. Op dezelfde manier kunnen sommige toepassingen (bijvoorbeeld antivirussoftware) aanvullende bestandssysteem-gebeurtenissen veroorzaken die worden gedetecteerd door FileSystemWatcher.
Gebruik NotifyFilter dit om het aantal meldingen te beperken dat wordt gegenereerd wanneer deze gebeurtenis wordt verwerkt.
Note
De Changed gebeurtenis wordt onverwacht gegenereerd wanneer de naam van een bestand wordt gewijzigd, maar wordt niet gegenereerd wanneer de naam van een map wordt gewijzigd. Gebruik de gebeurtenis om de Renamed naam te wijzigen.
Note
De volgorde waarin de Changed gebeurtenis wordt gegenereerd ten opzichte van de andere FileSystemWatcher gebeurtenissen, kan veranderen wanneer de SynchronizingObject eigenschap niet nullis.