文本书写器已经在延迟定时器“中关闭;勾选“;事件

本文关键字:中关闭 书写器 勾选 事件 延迟 定时器 文本 | 更新日期: 2023-09-27 18:26:57

我正试图在windows窗体上使用延迟计时器。我想避免线程。睡眠,因为我希望控件在延迟期间处于活动状态。现在我有一个按钮,可以在单击时启动代码。它打开一个流,并将标题行写入csv中。然后,我委托计时器勾选一个。如果复选框被选中,它会停止计时器,但否则它会写一行新行。之后,计时器启动。直到计时器执行之后,写入程序才会关闭。所以,类似

FileStream myData = File.OpenWrite("myfile.csv");
TextWriter myWriter = new StreamWriter(myData);
myWriter.Write("Titles,Go,Here'n");
int x = 0;
delayTimer.Tick+=
delegate
{
    if (checkBox.Checked)
    {
        delayTimer.Stop();
    }
    myWriter.Write(x+"stuff'n");
    x++;
};
delayTimer.Start();
myWriter.Close();

但是,每当我尝试执行时,它都会在按下按钮后冻结,Visual Studio会通知我StreamWriter已关闭。我真的不知道如何解决这个问题,因为我认为代码会在继续之前执行计时器,除非我不明白它是如何执行计时器的。

文本书写器已经在延迟定时器“中关闭;勾选“;事件

您必须注意,在dlay开始后关闭Stream,因此当Tick发生时,Stream将关闭。当Stream的作业完成时,请尝试关闭匿名委托内的Stream。

抱歉我英语不好。我希望我帮了你。