예제 #1
0
 /// <summary>
 /// 进度条更改时
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ProgBar_backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
 {
     if (ProgPauseflag == 0)
     {
         //进度条执行到80%时
         if (Convert.ToInt32(RtoF_progressBarControl.EditValue.ToString()) > (0.8 * RtoF_progressBarControl.Properties.Maximum))
         {
             RtoF_progressBarControl.Properties.Step = 5000;
         }
         //进度条执行到90%时
         if (Convert.ToInt32(RtoF_progressBarControl.EditValue.ToString()) > (0.9 * RtoF_progressBarControl.Properties.Maximum))
         {
             completingflag = 1;
             ProgPauseflag  = 1;
         }
         RtoF_progressBarControl.PerformStep();
     }
     else
     //当前为暂停状态时,ProgPauseflag值为1
     {
         changestep = changestep + 5;
         if (changestep * 10000 > changelength && completingflag == 0)
         {
             ProgPauseflag = 0;//完成循环,取消暂停状态
             changestep    = 0;
             changelength  = 0;
         }
     }
     RtoF_progressBarControl.Update();
 }
예제 #2
0
        /// <summary>
        /// 文件监测
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FilesOnChanged(object source, FileSystemEventArgs e)
        {
            //当文件创建或更改时执行此方法
            if (e.ChangeType == WatcherChangeTypes.Changed || e.ChangeType == WatcherChangeTypes.Created)
            {
                FileInfo prefile = new FileInfo(e.FullPath);
                FileInfo file    = null;
                if (prefile.Extension == "")
                {
                    file = new FileInfo(e.FullPath + "\\w001001.adf");
                }
                else
                {
                    file = new FileInfo(e.FullPath);
                }
                //检查是否跨线程调用
                if (RtoF_progressBarControl.InvokeRequired)
                {
                    //将方法委托到主线程
                    methoddelegate mydelegate = new methoddelegate((object source1, FileSystemEventArgs e1) => FilesOnChanged(source, e));
                    memoEdit1.Invoke(mydelegate, source, e);
                    RtoF_progressBarControl.Invoke(mydelegate, source, e);
                }
                else
                {
                    FileSystemWatcher filewatcher = source as FileSystemWatcher;
                    if (Convert.ToInt32(RtoF_progressBarControl.EditValue.ToString()) == RtoF_progressBarControl.Properties.Maximum)
                    {
                        //根据进度条当前值判断转换结束
                        filewatcher.EnableRaisingEvents = false;
                        filewatcher.Changed            -= new FileSystemEventHandler(FilesOnChanged);
                        filewatcher.Created            -= new FileSystemEventHandler(FilesOnChanged);
                        return;
                    }
                    //停止计时,估算结果文件大小并重新设置进度条属性
                    watch.Stop();
                    if (RtoF_progressBarControl.Properties.Maximum == 100000)
                    {
                        int maximum = (int)watch.ElapsedMilliseconds * 2910;
                        RtoF_progressBarControl.Properties.Maximum = maximum;
                        RtoF_progressBarControl.Properties.Step    = 10000;
                    }

                    int value = RtoF_progressBarControl.Properties.Maximum / 1000;
                    if (file.Exists)
                    {
                        if (Convert.ToInt32(RtoF_progressBarControl.EditValue.ToString()) <= (int)file.Length)
                        {
                            ProgPauseflag = 0;//文件长度大于进度条当前值
                            RtoF_progressBarControl.EditValue = file.Length;
                        }
                        else
                        {
                            ProgPauseflag = 1;//文件长度小于进度条当前值,暂停并等待
                            changelength  = Convert.ToInt32(RtoF_progressBarControl.EditValue.ToString()) - (int)file.Length;
                        }
                    }
                }
            }
        }