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.
FileStream.Position ReadAsync veya WriteAsync tamamlandıktan sonra artık güncelleştirilir.
Açıklamayı değiştir
Windows'un önceki .NET sürümlerinde, FileStream.Position zaman uyumsuz okuma veya yazma işlemi başlatıldıktan sonra güncelleştirildi. .NET 6'dan FileStream.Position başlayarak iyimser bir şekilde güncelleştirilir:
- WriteAsync başladıktan sonra, ancak işlem başarısız olursa veya iptal edilirse konum düzeltilir.
- ReadAsync başlatıldığında, ancak tüm arabellek okunmazsa, işlem tamamlandıktan sonra konum düzeltilir.
Sürüm kullanıma sunulmuştur
.NET 6
Değişiklik nedeni
FileStream hiçbir zaman iş parçacığı güvenli olmamıştı, ancak .NET 6'ya kadar .NET, Windows üzerinde eşzamansız yöntemlerine (ReadAsync ve WriteAsync) yönelik birden çok eşzamanlı çağrıyı desteklemeye çalıştı.
Bu değişiklik, 100% zaman uyumsuz dosya G/Ç'sine FileStream izin vermek ve aşağıdaki sorunları çözmek için kullanıma sunulmuştur:
- FileStream.FlushAsync sonunda eşzamanlı yazma işlemleri yapıyor
- Win32 FileStream zaman uyumsuz okumaları eşzamanlı okumalara dönüştürür
Önerilen eylem
Kodunuz FileStream.Position okuma veya yazma işlemleri gerçekleştirdiğinden okuma veya yazma başlamadan önce ayarlanmasına güveniyorsanız, bunun yerine API'yi kullanmaya System.IO.RandomAccess geçmeniz gerekir. RandomAccess API, paralel dosya işlemleri için tasarlanmıştır.
.NET 6'da .NET 5 davranışını etkinleştirmek için bir
AppContext
anahtar veya ortam değişkeni belirtin. Anahtarıtrue
olacak şekilde ayarlayarakFileStream
'de yapılan tüm performans iyileştirmelerinden vazgeçmiş olursunuz.{ "configProperties": { "System.IO.UseNet5CompatFileStream": true } }
set DOTNET_SYSTEM_IO_USENET5COMPATFILESTREAM=1
Önemli
Bu anahtar yalnızca .NET 6'da kullanılabilir. .NET 7'de kaldırıldı.