日期:2014-05-16  浏览次数:21186 次

C#线程问题,不太明白请指点
本帖最后由 zdczdcc 于 2014-03-27 15:41:39 编辑
原本把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表示已执行不需再执行
          &nb