/// <summary>
        /// 应用程序的主入口点。
         /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new QTEST());
        }
BackgroundWorker 的 DoWork 事件里面的工作完成后,上面的语句就抛异常了
调用的目标发生了异常 
TargetInvocationException 
怎么解决
在此请教各位朋友

解决方案 »

  1.   

    DoWork的代码如下        private void backgroundWorker3_DoWork(object sender, DoWorkEventArgs e)
            {
                for (int i = 1; i <= progressBar1.Maximum; i++)
                {
                    System.Threading.Thread.Sleep(100);
                    backgroundWorker3.ReportProgress(i);
                }
            }
      

  2.   


    private void backgroundWorker3_DoWork(object sender, DoWorkEventArgs e)
            {
                for (int i = 0; i < progressBar1.Maximum; i++)
                {
                    System.Threading.Thread.Sleep(100);
                    backgroundWorker3.ReportProgress(i);
                }
            }
    你这样试试
      

  3.   


    BackgroundWorker worker = null;
    private void button1_Click(object sender, EventArgs e)
            {
                //StringBuilder sb = new StringBuilder();
                //sb.Append("asdf1");
                //MessageBox.Show(sb.Remove(sb.Length - 1, 1).ToString());
                worker = new BackgroundWorker();
                worker.WorkerReportsProgress = true;
                worker.WorkerSupportsCancellation = true;
                worker.DoWork += new DoWorkEventHandler(worker_DoWork);
                worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
                worker.RunWorkerAsync();
            }        void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
            {
                progressBar1.Value = e.ProgressPercentage;
            }        void worker_DoWork(object sender, DoWorkEventArgs e)
            {
                for (int i = 0; i < progressBar1.Maximum; i++)
                {
                    System.Threading.Thread.Sleep(10);
                    worker.ReportProgress(i);
                }        }
    这是我写的,已经测试没有问题
      

  4.   

    已经解决问题了
    我加了这么一句        private void backgroundWorker3_DoWork(object sender, DoWorkEventArgs e)
            {
                for (int i = 0; i < progressBar1.Maximum; i++)
                {
                    System.Threading.Thread.Sleep(100);
                    backgroundWorker3.ReportProgress(i);
                }
                e.Cancel = true;
            }
      

  5.   

    我也遇到同样问题了,但是加上e.Cancel = true;也没起作用??