C#清除计时器中的richTextBox
我想保存richTextBox。当用户选中“保存”复选框时,每分钟保存一次文本 这里是复选框事件 num_saveTime是输入分钟数的numericUpDown控件 保存计时器是全局变量C#清除计时器中的richTextBox,c#,timer,save,richtextbox,C#,Timer,Save,Richtextbox,我想保存richTextBox。当用户选中“保存”复选框时,每分钟保存一次文本 这里是复选框事件 num_saveTime是输入分钟数的numericUpDown控件 保存计时器是全局变量 private void chk_save_CheckedChanged(object sender, EventArgs e) { if (chk_save.Checked) { num_saveTime.Enabled = false; save_t
private void chk_save_CheckedChanged(object sender, EventArgs e)
{
if (chk_save.Checked)
{
num_saveTime.Enabled = false;
save_timer = new System.Timers.Timer();
save_timer.Elapsed += new System.Timers.ElapsedEventHandler(save_timer_Elapsed);
save_timer.Interval = 250;
save_timer.Start();
}
else
{
num_saveTime.Enabled = true;
save_timer.Stop();
}
}
和计时器事件
delegate void TimerDelegate(object sender, System.Timers.ElapsedEventArgs e);
void save_timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (rtxb_PKT.InvokeRequired)
{
TimerDelegate tdel = new TimerDelegate(save_timer_Elapsed);
rtxb_PKT.Invoke(tdel, new object[] { sender, e });
}
else
{
string now_ss = DateTime.Now.ToString("ss");
if (now_ss.Equals("00"))
{
string now_mm = DateTime.Now.ToString("mm");
string save_mm = Convert.ToInt32(num_saveTime.Value).ToString("D2");
if (save_mm.Equals(now_mm))
{
string path = Application.StartupPath + @"\" + DateTime.Now.ToString("yy-MM-dd--HH-mm-sss") + ".rtf";
rtxb_PKT.SaveFile(path, RichTextBoxStreamType.RichText);
rtxb_PKT.Clear(); //----here
}
}
}
}
我想在保存后清除richTextBox
但我插入了.Clear()那个位置,它在保存之前清除了文本,所以文件是空的
保存后如何清除?可能是您保存了两次?第一次一切正常时,再次清除并保存空rtxb。对于在UI线程上运行的任务,计时器滴答事件(间隔250ms)被触发的频率过高。想象你的文件将被保存四次!更糟糕的是,即使您将间隔设置为250ms,也不能保证在该秒{save_mm:00}内触发任何已用事件!UI线程在那一秒钟内可能很忙,因此您的保存逻辑可以推迟到下一个小时。您是对的。我增加了间隔,它保存得很好。。。。