public void FireTaskProgress(ProgressEventType eventType, string file, UpdateProgressData data)
        {
            if (eventType == ProgressEventType.Progress &&
                data == UpdateProgressData.FileDone)
            {
                ProcessedObjects++;
            }

            if (FileTaskProgress != null)
            {
                FileTaskProgress(eventType, file, data);
            }
        }
Example #2
0
        void OnFileTaskProgress(ProgressEventType eventType, string file, UpdateProgressData data)
        {
            if (eventType == ProgressEventType.KeepAlive)
            {
                Application.DoEvents();
            }

            MainThread.Post(delegate(object x)
            {
                switch (eventType)
                {
                case ProgressEventType.Started:
                    pbOperation.Value   = 0;
                    pbOperation.Maximum = 10000;
                    pbOperation.Visible = (_task.ObjectsCount > 1);
                    TaskbarThumbnailManager.Instance.SetProgressStatus(TaskbarProgressBarStatus.Indeterminate);
                    TaskbarThumbnailManager.Instance.UpdateProgress(0, 10000);
                    break;

                case ProgressEventType.Aborted:
                    Close();
                    TaskbarThumbnailManager.Instance.SetProgressStatus(TaskbarProgressBarStatus.NoProgress);
                    break;

                case ProgressEventType.Finished:
                    if (_task.ErrorMap.Count > 0)
                    {
                        string message = Translator.Translate($"TXT_ERRORS_{_task.UpperCaseTaskType}_TASK");

                        new FileTaskErrorReport(_task.ErrorMap,
                                                Translator.Translate("TXT_ERRORS_ENCOUNTERED"), message).ShowDialog();

                        TaskbarThumbnailManager.Instance.SetProgressStatus(TaskbarProgressBarStatus.Error);
                    }
                    Close();
                    TaskbarThumbnailManager.Instance.SetProgressStatus(TaskbarProgressBarStatus.NoProgress);
                    break;

                case ProgressEventType.KeepAlive:
                case ProgressEventType.Progress:
                    txtCurFile.Text = file;
                    UpdateProgress(data);
                    break;
                }
            });
        }
Example #3
0
        private void UpdateProgress(UpdateProgressData state)
        {
            if (state.TotalFileSize > 0)
            {
                try
                {
                    long totalFileSize         = (state as UpdateProgressData).TotalFileSize;
                    long totalBytesTransferred = (state as UpdateProgressData).TotalBytesTransferred;

                    double fractionTransfer = 0;

                    if (totalBytesTransferred > 0 && totalFileSize > 0)
                    {
                        fractionTransfer = (double)totalBytesTransferred / (double)totalFileSize;
                    }

                    long processedObjectCount = _task.ProcessedObjects;
                    long totalObjectCount     = _task.ObjectsCount;

                    int percent = (int)((100 * (processedObjectCount + fractionTransfer)) / totalObjectCount);

                    pbCurrent.Value   = 10000 * fractionTransfer;
                    pbOperation.Value = (10000 * processedObjectCount) / totalObjectCount;

                    lblCurrentProgress.Text = string.Format(_taskProgress, _taskDesc, processedObjectCount,
                                                            totalObjectCount, percent);

                    TaskbarThumbnailManager.Instance.SetProgressStatus(TaskbarProgressBarStatus.Normal);
                    TaskbarThumbnailManager.Instance.UpdateProgress(
                        (ulong)((10000 * processedObjectCount) / totalObjectCount), 10000);
                }
                catch (Exception ex)
                {
                    Logger.LogException(ex);
                }
            }
        }
Example #4
0
 public void FireTaskProgress(ProgressEventType eventType, string file, UpdateProgressData data)
 {
     if (FileTaskProgress != null)
     {
         FileTaskProgress(eventType, file, data);
     }
 }
Example #5
0
        public Kernel32.CopyFileCallbackAction CopyFileCallback(
           FileInfo source, FileInfo destination, object state,
           long totalFileSize, long totalBytesTransferred)
        {
            UpdateProgressData data = new UpdateProgressData(totalFileSize, totalBytesTransferred);

            _task.FireTaskProgress(ProgressEventType.Progress, source.FullName, data);

            do
            {
                Application.DoEvents();
            }
            while (_fileTaskWaitEvent.WaitOne(20, true));

            return CanContinue ? 
                Kernel32.CopyFileCallbackAction.Continue : 
                Kernel32.CopyFileCallbackAction.Cancel;
        }
Example #6
0
        private void UpdateProgress(UpdateProgressData state)
        {
            if (state.TotalFileSize > 0)
            {
                try
                {
                    long totalFileSize = (state as UpdateProgressData).TotalFileSize;
                    long totalBytesTransferred = (state as UpdateProgressData).TotalBytesTransferred;

                    double fractionTransfer = 0;

                    if (totalBytesTransferred > 0 && totalFileSize > 0)
                    {
                        fractionTransfer = (double)totalBytesTransferred / (double)totalFileSize;
                    }

                    long processedObjectCount = _task.ProcessedObjects;
                    long totalObjectCount = _task.ObjectsCount;

                    int percent = (int)((100 * (processedObjectCount + fractionTransfer)) / totalObjectCount);

                    pbCurrent.Value = 10000 * fractionTransfer;
                    pbOperation.Value = (10000 * processedObjectCount) / totalObjectCount;

                    lblCurrentProgress.Text = string.Format(_taskProgress, _taskDesc, processedObjectCount,
                            totalObjectCount, percent);

                    TaskbarThumbnailManager.Instance.SetProgressStatus(TaskbarProgressBarStatus.Normal);
                    TaskbarThumbnailManager.Instance.UpdateProgress(
                        (ulong)((10000 * processedObjectCount) / totalObjectCount), 10000);
                }
                catch (Exception ex)
                {
                    Logger.LogException(ex);
                }
            }
        }
Example #7
0
        void OnFileTaskProgress(ProgressEventType eventType, string file, UpdateProgressData data)
        {
            if (eventType == ProgressEventType.KeepAlive)
            {
                Application.DoEvents();
            }

            MainThread.Post(delegate(object x)
            {
                switch (eventType)
                {
                    case ProgressEventType.Started:
                        pbOperation.Value = 0;
                        pbOperation.Maximum = 10000;
                        pbOperation.Visible = (_task.ObjectsCount > 1);
                        TaskbarThumbnailManager.Instance.SetProgressStatus(TaskbarProgressBarStatus.Indeterminate);
                        TaskbarThumbnailManager.Instance.UpdateProgress(0, 10000);
                        break;

                    case ProgressEventType.Aborted:
                        Close();
                        TaskbarThumbnailManager.Instance.SetProgressStatus(TaskbarProgressBarStatus.NoProgress);
                        break;

                    case ProgressEventType.Finished:
                        if (_task.ErrorMap.Count > 0)
                        {
                            string message = Translator.Translate(string.Format("TXT_ERRORS_{0}_TASK",
                                _task.TaskType.ToString().ToUpperInvariant()));

                            new FileTaskErrorReport(_task.ErrorMap,
                                Translator.Translate("TXT_ERRORS_ENCOUNTERED"), message).ShowDialog();

                            TaskbarThumbnailManager.Instance.SetProgressStatus(TaskbarProgressBarStatus.Error);
                        }
                        Close();
                        TaskbarThumbnailManager.Instance.SetProgressStatus(TaskbarProgressBarStatus.NoProgress);
                        break;

                    case ProgressEventType.KeepAlive:
                    case ProgressEventType.Progress:
                        txtCurFile.Text = file;
                        UpdateProgress(data);
                        break;
                }

            });
        }