У меня есть код followig:Как я могу предупредить, чтобы мой System.Timers.Timer не смог запустить событие Elapsed после его остановки?
using (FileStream sourceStream = sourceFile.Open())
{
using (FileStream targetStream = File.Create(targetFilePath))
{
using (Timer timer = new Timer(250))
{
timer.Elapsed += (sender, e) =>
{
if (this.FileCopyProgressChanged != null)
{
//Here the ObjectDisposedException appears
this.FileCopyProgressChanged(this,
new CopyProgressEventArgs(
sourceStream.Length,
targetStream.Length));
}
};
timer.Start();
sourceStream.CopyTo(targetStream);
timer.Stop();
}
}
}
Мой таймер истекает через каждые 250 миллисекунд и вызывает событие с информацией о ходе потока копирования. Проблема в том, что иногда в событии таймера возникает ObjectDisposedException, потому что потоки больше не открываются.
Как я могу предотвратить мой таймер от поднятия прошедшего события после того, как мои потоки будут удалены?