我有以下代码:
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,因为不再打开流。
如何防止我的计时器在我的流被处理后引发经过的事件?