我的需求是这样的:
对文件加密很费时间,于是我另外申请了一个线程专门用于对文件的加密;
在主线程的上,有个窗体,窗体上有一个statusbar,我希望在里面动态显示一些加密文件的进度,比如:加密了几个文件了,加密已经用了多少时间了。
请问我怎么从加密文件的线程里面获取相关参数?
还有相关的问题,我怎么才能在新开的线程里面改变主线程里面的控件的一些值?
对文件加密很费时间,于是我另外申请了一个线程专门用于对文件的加密;
在主线程的上,有个窗体,窗体上有一个statusbar,我希望在里面动态显示一些加密文件的进度,比如:加密了几个文件了,加密已经用了多少时间了。
请问我怎么从加密文件的线程里面获取相关参数?
还有相关的问题,我怎么才能在新开的线程里面改变主线程里面的控件的一些值?
backgroundworker 控件确实可以实现后台线程的进度显示。不过听说有bug,本人没有验证过MS楼主的这部分应该不难,完全也可以自己写。如果没有具体的量化依据,可以根据完成的步骤进行显示进度其他线程要修改主线程界面,需要通过委托:BeginInvoker
我用过,好像也没有什么明显的bug,
使用起来比使用委托方便,特别是刚开始对委托不熟悉的话,上手快example:
//定义
BackgroundWorker initWorker = new BackgroundWorker();
//设定为可以显示进度
initWorker.WorkerReportsProgress = true;
//注册工作事件
initWorker.DoWork += new DoWorkEventHandler(initWorker_DoWork);
将来的后台处理就放在initWorker_DoWork中实现,
//注册进度显示事件
initWorker.ProgressChanged += new ProgressChangedEventHandler(initWorker_ProgressChanged);
进度显示的操作放在initWorker_ProgressChanged中
//注册完成事件
initWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(initWorker_RunWorkerCompleted);
操作完成后收尾工作放在initWorker_RunWorkerCompleted中
//启用
initWorker.RunWorkerAsync();
俺也是低手,多指教