首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于控件backgroundWorker后台操作的有关问题

2012-01-11 
关于控件backgroundWorker后台操作的问题使用.net2.0新加的backgroundWorker控件进行多线程的操作,其中bac

关于控件backgroundWorker后台操作的问题
使用.net   2.0新加的backgroundWorker控件进行多线程的操作,其中backgroundWorker下的函数ProgressChanged是负责报告当前程序进度的,这部分代码如下
                private   void   backgroundWorker1_DoWork(object   sender,   DoWorkEventArgs   e)
                {
                        BackgroundWorker   worker   =   sender   as   BackgroundWorker;
                        this.changeFormat((data)e.Argument   ,   worker,   e);
                }

                private   void   backgroundWorker1_ProgressChanged(object   sender,   ProgressChangedEventArgs   e)
                {
                        toolStripStatusLabel1.Text   =   "正在格式转换.... "   +   e.ProgressPercentage   +   "% ";
                        toolStripProgressBar1.Value   =   e.ProgressPercentage;
                        if   (e.ProgressPercentage   ==   100)
                        {
                                MessageBox.Show( "格式转换成功! ");
                        }
                        this.Refresh();
                }
                private   void   backgroundWorker1_RunWorkerCompleted(object   sender,   RunWorkerCompletedEventArgs   e)
                {
                        this.Cursor   =   Cursors.Default;                        
                }
其中                 backgroundWorker1.WorkerReportsProgress   =   true;
                        backgroundWorker1.WorkerSupportsCancellation   =   true;
现在就是不知道哪里的原因,无法调用backgroundWorker1_ProgressChanged这个函数,也就是说辅助线程是否报告进度无法实现,不明白哪里出错了。


[解决办法]
this.changeFormat((data)e.Argument , worker, e)是做什么的?
[解决办法]
ProgressChanged是个事件
[解决办法]
ReportProgress这个方法调了么?
[解决办法]
事件是发生的,而不是调用的,事件发生时会自动调用相应事件处理代码
可以用ReportProgress方法,引发 ProgressChanged事件

热点排行