Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
PhysicalFilesWatcher oluşturucuları artık FileSystemWatcher.Path bağımsız değişkenini ve root ile root arasındaki ilişkiyi doğrular. Daha önce inşaat zamanında kabul edilen geçersiz birleşimler artık bir özel durum oluşturur.
Sürüm kullanıma sunulmuştur
.NET 11 Önizleme 4
Önceki davranış
PhysicalFilesWatcher Daha önce oluşturucular doğrulama veya normalleştirme olmadan sağlanan root öğesini depolamıştı. Bir null veya başka bir nedenle geçersiz olan bir kök, oluşturma sırasında kabul edilebilir ve daha sonraki bir izleyici işleminde başarısız olabilir.
Oluşturucular ayrıca, boş olmayan root öğesi FileSystemWatcher ile ilgisiz olan bir Path öğesini de kabul ediyordu. Böyle bir izleyici genellikle yapılandırılmış kökle ilgili değişiklikleri raporlayamazdı, ancak bu uyuşmazlık oluşturucunun bir istisna fırlatmasına neden olmadı.
Örneğin, aşağıdaki yapı başarılı oldu:
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);
Yeni davranış
.NET 11'den itibaren, PhysicalFilesWatcher oluşturucuları, root çağrısı yaparak Path.GetFullPath() değerini normalleştirir ve geçersiz girdileri oluşturma sırasında reddeder:
-
root,nullise, oluşturucu ArgumentNullException fırlatır. -
roottam yola dönüştürülemezse, oluşturucuPath.GetFullPath()öğesinden gelen ilgili özel durumu iletir. -
FileSystemWatcher.Pathboş değilse verootile ilişkili değilse, oluşturucu ArgumentException fırlatır.
FileSystemWatcher.Path, boş olduğunda, root öğesine eşit olduğunda, root öğesinin bir atası olduğunda veya root öğesinin bir alt öğesi olduğunda geçerlidir. Önceki örnekte, ArgumentException, unrelatedPath öğesinin ne atası ne de soyundan geleni olduğundan, oluşturma işlemi artık root oluşturur.
Henüz var olmayan bir kök dizin geçerli kalır. Dosya izleme, kök oluşturulana kadar erteleniyor.
Kesinti yaratan değişiklik türü
Bu değişiklik davranışsal bir değişikliktir.
Değişiklik nedeni
PhysicalFilesWatcher, izleyici oluşturulduğunda mevcut olmayan kökleri artık destekliyor. Bu işlem, kökün normalleştirilmesini ve sağlanan FileSystemWatcher öğesinin bu kökle eşgüdümlenmesini gerektirir.
İlişkili olmayan bir dizini izleyen FileSystemWatcher, yapılandırılmış kök dizin için güvenilir şekilde bildirimler oluşturamaz. Bu geçersiz kombinasyonun oluşturma aşamasında reddedilmesi, genel olarak işe yaramayan bir yapılandırmada bir izleme bileşeninin oluşturulmasını önler. Kökün doğrulanması, geçersiz yolların daha sonraki bir izleyici işlemi yerine hemen başarısız olmasına da neden olur. Daha fazla bilgi için bkz. dotnet/runtime#126411.
Önerilen eylem
Null olmayan, geçerli bir yolu olarak rootgeçirin.
Boş olmayan bir FileSystemWatcher içeren bir Path sağladığınızda, yolunu root ile aynı, root’nin üst öğesi veya alt öğesi olacak şekilde yapılandırın. Örneğin:
string root = Path.GetFullPath(configuredRoot);
using var fileSystemWatcher = new FileSystemWatcher(root);
using var watcher = new PhysicalFilesWatcher(
root,
fileSystemWatcher,
pollForChanges: false);
Kök dizin henüz yoksa boş FileSystemWatcher.Path bir dizin geçerlidir:
string root = Path.GetFullPath(configuredRoot);
using var fileSystemWatcher = new FileSystemWatcher();
using var watcher = new PhysicalFilesWatcher(
root,
fileSystemWatcher,
pollForChanges: false);
İzleyici, kök dizin oluşturulduktan sonra izlemeye başlar.