【发布时间】:2014-10-17 15:09:22
【问题描述】:
我正在尝试在 Windows 窗体上使用延迟计时器。我想避免 Thread.Sleep 因为我希望控件在延迟期间处于活动状态。现在我有一个按钮,可以在点击时启动代码。它打开一个流并将标题行写入 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 已关闭。我不太确定如何解决这个问题,因为我认为代码会在继续之前执行计时器,除非我只是不明白它是如何执行计时器的。
【问题讨论】:
-
尝试使用(mywriter.write("title etcetc);?using and streamwriters in c#