İngilizce dilinde oku

Aracılığıyla paylaş


FileSystemWatcher.Changed Olay

Tanım

Belirtilen Path içindeki bir dosya veya dizin değiştirildiğinde gerçekleşir.

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

Olay Türü

Öznitelikler

Örnekler

Aşağıdaki örnek, izlenen dosya her değiştirildiğinde konsolunun dosya yolunu görüntülemek için olayını kullanır Changed .

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

Açıklamalar

Olay Changed , izlenen dizindeki bir dosya veya dizinin boyutu, sistem öznitelikleri, son yazma zamanı, son erişim zamanı veya güvenlik izinlerinde değişiklik yapıldığında tetiklenir.

Not

Yaygın dosya sistemi işlemleri birden fazla olay tetikler. Örneğin, bir dosya bir dizinden diğerine taşındığında, birkaç OnChanged ve bazı OnCreated ve OnDeleted olaylar tetiklenebilir. Bir dosyayı taşımak, birden çok basit işlemden oluşan ve dolayısıyla birden çok olay oluşturan karmaşık bir işlemdir. Benzer şekilde, bazı uygulamalar (örneğin, virüsten koruma yazılımı) tarafından FileSystemWatcheralgılanan ek dosya sistemi olaylarına neden olabilir.

Bu olay işlendiğinde oluşturulan bildirimlerin sayısını kısıtlamak için kullanın NotifyFilter .

Not

Olay Changed , bir dosya yeniden adlandırıldığında beklenmedik bir şekilde tetikleniyor, ancak bir dizin yeniden adlandırıldığında tetiklenmiyor. Yeniden adlandırmayı watch için olayını kullanınRenamed.

Not

Özelliği olmadığındanull, olayın diğer FileSystemWatcher olaylarla ilişkili olarak tetiklenme sırası Changed değişebilirSynchronizingObject.

Şunlara uygulanır

Ürün Sürümler
.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

Ayrıca bkz.