private void FormrRealTime_Shown(object sender, EventArgs e)//窗口加载时启动一个定时器线程
        {
            Thread thread = new Thread(new ThreadStart(SetTimer));
            thread.IsBackground = true;
            thread.Start();
        }
        void SetTimer()//启动定时器后thread结束,每15秒钟执行一次refresh函数
        {
            System.Timers.Timer refreshpictureboxanddatagridview = new System.Timers.Timer();
            refreshpictureboxanddatagridview.Interval = 15 * 1000;
            refreshpictureboxanddatagridview.Elapsed += new System.Timers.ElapsedEventHandler(refresh);
            refreshpictureboxanddatagridview.AutoReset = true;
            refreshpictureboxanddatagridview.Enabled = true;
        }
       private void refresh(object source, ElapsedEventArgs e)
        {
                 //从数据库中用oledbdataadapter读数据,然后更新datagridview的数据源
        }第一次执行的时候刷新了数据,但是窗口死住了,鼠标不响应。到第三次的时候程序就在application.run()那里出错了
请问什么原因啊

解决方案 »

  1.   

    在refresh()中
    如果我只从数据库中搜索表,把dataGridView1.DataSource = ds.Tables[0];这句注释掉就没事。
    有这句话就不行。
      

  2.   

    这和控件的使用有什么关系吗?我可是设置了CheckForIllegalCrossThreadCalls = false;的啊
      

  3.   

    不建议使用 CheckForIllegalCrossThreadCalls = false
    这样有可能给程序造成隐患。
      

  4.   

    直接拖一个  Timer控件