private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {            lblTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            string str = GetBanblance(Global_User.CurrentUser.UserName);
            Global_User.CurrentUser.UserAccountRemain = Convert.ToInt32(str);
            Refresh();
            Thread.Sleep(1000);
        }        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = (BackgroundWorker)sender;
        }        private void MainForm1_Load(object sender, EventArgs e)
        {
            CheckForUpdate();
            lblUserName.Text = Global_User.CurrentUser.UserName;
            // GetBanblance(Global_User.CurrentUser.UserName);
            //通道初始化数据显示            lbltongdaotype.Text = MainForm.Properties.Settings.Default.tongdao + "  通道限制字" + MainForm.Properties.Settings.Default.phoneNum;
            backgroundWorker1.RunWorkerAsync();        }代码都贴出来了,希望大虾们帮忙。 里面的时间和账户余额怎么更新不了呢 哪里出了问题  

解决方案 »

  1.   

    晕!如果要定时显示数据,使用Timer就可以了。你阻塞(Sleep)主线程干什么?
      

  2.   

    使用Timer 程序运行一段时间,在点程序的时候程序就没有响应了。
      

  3.   

    楼主说说你要干什么
    你的代码dowork里啥都没干啊,不知道你要干啥
      

  4.   


     lblTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
      string str = GetBanblance(Global_User.CurrentUser.UserName);
      Global_User.CurrentUser.UserAccountRemain = Convert.ToInt32(str);
      Refresh();
      Thread.Sleep(1000);
    我把这些代码放到dowork里 却报错,就放到了backgroundWorker1_RunWorkerCompleted 里写了。 就是要实现上面的时间和账户余额的实时更新功能。刚学习多线程,不太懂
      

  5.   

    在backgroundWorker1_DoWork中去获取数据
    比如while(!worker.CancellationPending)
    {
     //get data and compare with current data
     //if data changed
          worker.ReportProgress
     Thread.Sleep(0);
    }
    另一边在worker的OnProgressChanged事件中加上你更新FORM的过程