Заботится ли userControl1.Dispose() обо всех своих одноразовых объектах?
Я сделал библиотеку userControl.. и она содержит NetworkStream, StreamReader, FileStream
Так я должен избавиться от них всех, когда форма, которая имеет этот userControl закрывается??
Я имею в виду Там нет такого Form1_FormClosing(object sender,FormClosingEventArgs e)
в userControl так, когда я должен располагать эти потоки?
Обрабатывает ли userControl1.Dispose() это?
заранее спасибо:)
2 ответа
UserControl.Dispose()
располагает компонентами в Controls
коллекция, но не более того.
Вы можете справиться с UserControl.Disposed
событие, или вы можете правильно реализовать шаблон Dispose.
Для пользовательских элементов управления C# protected override void Dispose(bool disposing)
автоматически создается в UserControl1.Designer.cs
, Вы можете изменить его на:
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
// Dispose your streams here
}
base.Dispose(disposing);
}
userControl1.Dispose()
волшебным образом не позаботится об этом, если вы не переопределите его и не введете код для удаления ваших объектов, что вам и следует делать.
Посмотрите на этот ответ, чтобы увидеть, как его реализовать, замените отмену обработки события вашими вызовами, чтобы избавиться от ваших потоков.