Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
PhysicalFilesWatcher konstruktor sekarang memvalidasi root argumen dan hubungan antara root dan FileSystemWatcher.Path. Kombinasi tidak valid yang sebelumnya diterima saat pembuatan kini akan memunculkan pengecualian.
Versi yang diperkenalkan
.NET 11 Pratinjau 4
Perilaku sebelumnya
Sebelumnya, konstruktor PhysicalFilesWatcher menyimpan root yang diberikan tanpa validasi atau normalisasi. Sebuah null root atau root yang tidak valid karena alasan lain dapat diterima saat konstruksi dan gagal saat operasi watcher berikutnya.
Konstruktor-konstruktor tersebut juga menerima sebuah FileSystemWatcher yang Path-nya tidak kosong dan tidak terkait dengan root. Pengamat seperti itu umumnya tidak dapat melaporkan perubahan yang relevan dengan akar yang dikonfigurasi, tetapi ketidakcocokan tidak menyebabkan konstruktor melemparkan.
Misalnya, konstruksi berikut berhasil:
string root = Path.Combine(Path.GetTempPath(), "root");
string unrelatedPath = Path.Combine(Path.GetTempPath(), "unrelated");
Directory.CreateDirectory(root);
Directory.CreateDirectory(unrelatedPath);
using var fileSystemWatcher = new FileSystemWatcher(unrelatedPath);
using var watcher = new PhysicalFilesWatcher(
root,
fileSystemWatcher,
pollForChanges: false);
Perilaku baru
Mulai dari .NET 11, konstruktor PhysicalFilesWatcher menormalkan root dengan memanggil Path.GetFullPath() dan menolak input yang tidak valid saat konstruksi:
- Jika
rootadalahnull, konstruktor melempar ArgumentNullException. - Jika
roottidak dapat dikonversi ke jalur lengkap, konstruktor menyebarluaskan pengecualian yang berlaku dariPath.GetFullPath(). - Jika
FileSystemWatcher.Pathtidak kosong dan tidak terkait denganroot, konstruktor akan melemparkan ArgumentException.
FileSystemWatcher.Path valid ketika kosong, sama dengan root, leluhur dari root, atau turunan dari root. Dalam contoh sebelumnya, konstruksi sekarang melemparkan ArgumentException karena unrelatedPath bukan leluhur maupun keturunan dari root.
Direktori akar yang belum ada tetap valid. Pemantauan file ditunda hingga direktori root dibuat.
Jenis perubahan yang memutus kompatibilitas
Perubahan ini adalah perubahan perilaku.
Alasan perubahan
PhysicalFilesWatcher sekarang mendukung direktori root yang belum ada saat watcher dibuat. Ini memerlukan normalisasi akar kata dan pengoordinasian FileSystemWatcher yang disediakan dengan akar kata tersebut.
FileSystemWatcher yang memantau direktori yang tidak terkait tidak dapat secara andal memberikan notifikasi untuk direktori root yang dikonfigurasi. Menolak kombinasi yang tidak valid ini saat konstruksi mencegah watcher dibuat dalam konfigurasi yang pada umumnya tidak berfungsi. Validasi jalur akar juga menyebabkan jalur yang tidak valid langsung gagal, alih-alih saat operasi watcher berikutnya. Untuk informasi selengkapnya, lihat dotnet/runtime#126411.
Tindakan yang disarankan
Berikan jalur yang tidak null dan valid sebagai root.
Ketika Anda menyediakan FileSystemWatcher dengan Path yang tidak kosong, konfigurasikan jalurnya agar sama dengan, menjadi induk dari, atau menjadi turunan dari root. Contohnya:
string root = Path.GetFullPath(configuredRoot);
using var fileSystemWatcher = new FileSystemWatcher(root);
using var watcher = new PhysicalFilesWatcher(
root,
fileSystemWatcher,
pollForChanges: false);
Jika direktori akar masih belum ada, FileSystemWatcher.Path kosong dianggap valid:
string root = Path.GetFullPath(configuredRoot);
using var fileSystemWatcher = new FileSystemWatcher();
using var watcher = new PhysicalFilesWatcher(
root,
fileSystemWatcher,
pollForChanges: false);
Pengamat mulai memantau setelah direktori akar dibuat.