FileSystemWatcher.Changed Událost

Definice

Vyvolá se při změně souboru nebo adresáře v zadaném Path adresáři.

public event System.IO.FileSystemEventHandler? Changed;
public event System.IO.FileSystemEventHandler Changed;
[System.IO.IODescription("FSW_Changed")]
public event System.IO.FileSystemEventHandler Changed;

Event Type

Atributy

Příklady

Následující příklad používá Changed událost k zobrazení cesty k souboru konzoly při každé změně sledovaného souboru.

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);
            }
        }
    }
}

Poznámky

Událost Changed je vyvolána při změně velikosti, atributů systému, času posledního zápisu, času posledního přístupu nebo oprávnění zabezpečení souboru nebo adresáře v monitorovaném adresáři.

Poznámka

Běžné operace systému souborů můžou vyvolat více než jednu událost. Například při přesunutí souboru z jednoho adresáře do jiného může dojít k vyvolání několika OnChanged a některých OnCreated událostí a OnDeleted . Přesunutí souboru je složitá operace, která se skládá z několika jednoduchých operací, a proto vyvolává více událostí. Podobně některé aplikace (například antivirový software) můžou způsobovat další události systému souborů, které zjistí FileSystemWatcher.

Slouží NotifyFilter k omezení počtu oznámení vyvolaných při zpracování této události.

Poznámka

Událost Changed je vyvolána neočekávaně při přejmenování souboru, ale není vyvolána při přejmenování adresáře. K watch přejmenování použijte Renamed událost .

Poznámka

Pořadí, ve kterém Changed je událost vyvolána ve vztahu k ostatním FileSystemWatcher událostem, se může změnit, pokud SynchronizingObject vlastnost není null.

Platí pro

Produkt Verze
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Viz také