C#线程问题,不太明白请指点

zdczdccccc zdczdccccc 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
原本把Thread.Sleep(1000);放在位置1,调试时点button3其他按钮几乎就点不了,后来改到位置2调试通过,请问这两个地方有什么区别,为什么位置1会出现那种情况(具体位置,代码中已标出)

//功能是每天按时监控word内一个表格数据,如果在设定的时间点数据发生变化就将表格整体录入数据库
private void button3_Click(object sender, EventArgs e)
{
td = new Thread(delegate()
{
while (true)
{
this.Invoke((MethodInvoker)delegate()
{
if (listBox1.Items.Count > 0)//任务栏内有任务
{
foreach (object eachSetTime in listBox1.Items)
{
if (((Time)eachSetTime).needToExecute == true && ((Time)eachSetTime).hour.ToString() == DateTime.Now.Hour.ToString() &&
((Time)eachSetTime).minute.ToString() == DateTime.Now.Minute.ToString() &&
((Time)eachSetTime).second.ToString() == DateTime.Now.Second.ToString())
{
((Time)eachSetTime).needToExecute = false;//needToExecute表示是否需要执行任务,true表示需要,false表示已执行不需再执行
TrackWordAtSetTime();//跟踪word的方法
}
}
//每天到了零点将所有任务重置
if (DateTime.Now.Hour.ToString() == "0" &&
DateTime.Now.Minute.ToString() == "0" &&
DateTime.Now.Second.ToString() == "0")
{
foreach (object eachSetTime in listBox1.Items)
{
((Time)eachSetTime).needToExecute = true;
}
}
}
// Thread.Sleep(1000); 位置1
});
Thread.Sleep(1000); //位置2
}

});
td.IsBackground = true;
td.Start();


}
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
zdczdccccc
C# 111,129 成员 642,538 内容