FileSystemWatcher.Deleted Olay

Tanım

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

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

Olay Türü

Öznitelikler

Örnekler

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

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

Dosya veya dizin kopyalama veya taşıma gibi bazı yaygın oluşumlar doğrudan bir olaya karşılık gelmez, ancak bu oluşumlar olayların oluşmasına neden olur. Bir dosya veya dizini kopyaladığınızda, sistem dosyanın kopyalandığı dizinde, bu dizin izleniyorsa bir olay tetikler Created . Kopyaladığınız dizin başka bir örneği tarafından izleniyorsa FileSystemWatcherhiçbir olay tetiklenmez. Örneğin, öğesinin iki örneğini FileSystemWatcheroluşturursunuz. FileSystemWatcher1 watch "C:\Belgelerim" olarak, FileSystemWatcher2 ise watch "C:\Belgeleriniz" olarak ayarlanır. "Belgelerim" dosyasından "Belgeleriniz"e bir dosya kopyalarsanız, FileSystemWatcher2 tarafından bir Created olay tetiklenir, ancak FileSystemWatcher1 için hiçbir olay tetiklenemez. Kopyalamanın aksine, bir dosya veya dizinin taşınması iki olayı tetikler. Önceki örnekten, bir dosyayı "Belgelerim"den "Belgeleriniz"e taşıdıysanız, FileSystemWatcher2 tarafından bir Created olay ve FileSystemWatcher1 tarafından bir Deleted olay 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.

Not

Özelliği olmadığındanull, olayın diğer FileSystemWatcher olaylarla ilişkili olarak tetiklenme sırası Deleted 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.