我在C#中写了一个提示框,提示并选择是否向数据库里面导入数据,但是每次导入的时候都是提示框点击确定以后,总是卡主,等导入完成以后,提示框才消失,这是什么原因啊?能不能那位兄弟帮忙解决一下啊
                    if (DialogResult.OK == MessageBox.Show("你导入的是" + comboBox1.Text, "提示信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning))
                    {
                       
                        read();//此处执行将TXT文本数据导入数据库
                    }

解决方案 »

  1.   

      if (DialogResult.OK == MessageBox.Show("你导入的是" + comboBox1.Text, "提示信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning))
      {
         Thread th=newThread(new ThreadStart(delegate{
            read();//此处执行将TXT文本数据导入数据库
         }));
         th.Start();
      
      }
      

  2.   

    if (DialogResult.OK == MessageBox.Show("你导入的是" + comboBox1.Text, "提示信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning))
      {
        Application.DoEvents();
      read();//此处执行将TXT文本数据导入数据库
      }
      

  3.   

    卡主肯定是你read中占用了cpu,改用线程,这样不影响你操作别的
      

  4.   

    read()占用了UI 线程,利用多线程将此方法置为后台运行的线程,腾出UI 线程
      

  5.   

    用异步线程完成数据导入,腾出UI线程。异步线程可参考BackgroundWorker组件。
    if (DialogResult.OK == MessageBox.Show("你导入的是" + comboBox1.Text, "提示信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning))
      {
        
      //read();//此处执行将TXT文本数据导入数据库
    backgroundWorker1.RunWorkerAsync();
      }private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
                read();//此处执行将TXT文本数据导入数据库
            }private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e){
    //显示进度条,表明数据处理情况
    }private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e){
    //导入数据完成
    }
      

  6.   

     if (DialogResult.OK == MessageBox.Show("提示信息", "请选择", MessageBoxButtons.OKCancel))
    {
          this.Close();
     }
    为什么关闭不了?
    用Application.Exit();却要关闭两次?
      

  7.   

     if (DialogResult.OK == MessageBox.Show("提示信息", "请选择", MessageBoxButtons.OKCancel))
                {
                   // this.Close();
                    this.FormClosing -= new FormClosingEventHandler(this.MainFrm_FormClosing);//为保证Application.Exit();时不再弹出提示,所以将FormClosing事件取消
                    Application.Exit();
                }