日期:2014-05-17  浏览次数:21018 次

WinCe 中的异步处理!
我在做WinCe开发时,想要将一个操作数据库的方法做成异步调用,可以显示一个进度条给用户,但是老是报错。
以下是我在winform中做的测试代码,运行没有问题,但是在Wince中,就报错。
        
        public delegate void DoThingDelegate();

        private void button1_Click(object sender, EventArgs e)
        {
            DoThingDelegate doThingDelegate = new DoThingDelegate(doThing);

            IAsyncResult ar = doThingDelegate.BeginInvoke(null, null);

            progressBar1.Visible = true;
          
            while (!ar.IsCompleted)
            {
                Thread.Sleep(100);
                progressBar1.Value = progressBar1.Value + 5;
            }

            progressBar1.Visible = false;

            MessageBox.Show("完成!");
        }

        private void doThing()
        {
            Thread.Sleep(2000);
        }

------解决方案--------------------
什么错误?
progressBar1.Value = progressBar1.Value + 5;

修改为
progressBar1.Invoke((EventHandler)delegate{progressBar1.Value += 5;});

这样试试?