Thay đổi, Stream
theo mặc định không gọi Flush()
theo phương thức Dispose
với một số ngoại lệ như FileStream
. Lý do cho điều này là một số đối tượng dòng không cần gọi đến Flush
vì chúng không sử dụng bộ đệm. Một số, chẳng hạn như MemoryStream
ghi đè rõ ràng phương thức để đảm bảo rằng không có hành động nào được thực hiện (làm cho nó trở thành no-op).
Điều này có nghĩa là nếu bạn không muốn có thêm cuộc gọi trong đó thì bạn nên kiểm tra xem lớp con Stream
bạn đang sử dụng thực hiện cuộc gọi theo phương thức Dispose
và liệu nó có cần thiết hay không.
Bất kể, nó có thể là một ý tưởng tốt để gọi nó anyway chỉ để có thể đọc - tương tự như cách một số người gọi Close()
ở phần cuối của báo cáo sử dụng của họ:
using (FileStream fS = new FileStream(params))
using (CryptoStream cS = new CryptoStream(params))
using (BinaryWriter bW = new BinaryWriter(params))
{
doStuff();
//from here it's just readability/assurance that things are properly flushed.
bW.Flush();
bW.Close();
cS.Flush();
cS.Close();
fS.Flush();
fS.Close();
}
cuối của việc sử dụng các cuộc gọi gần? Tôi chỉ biết rằng nó phân phối luồng, và tôi gọi gần methode ở cuối mỗi lần. –
Điều đó là không cần thiết, Vứt bỏ sẽ luôn Đóng luồng và Đóng sẽ tuôn ra luồng trước tiên. – nos
@FelixCzylwik: nếu kết thúc sử dụng không gọi Close, bạn sẽ có tấn luồng mở và SQLConnections mở ra ở đó ...: D –