Если щелкнуть родительскую форму во время работы дочерней формы, окна зависают до закрытия дочерней формы. - PullRequest
0 голосов
/ 04 мая 2018

У меня есть один процесс, в котором он должен удалить файлы из папки. При удалении файлов открывается пользовательская форма прогресса и отображается удаленный статус в процентах. Это работает нормально. Но если я щелкнул / дважды щелкнул по родительской форме или приложение формы прогресса зависает, и форма прогресса перестает обновлять статус (он находится в метке). Процесс удаления отстает, но статус не обновляется в форме выполнения. Это приложение в vs2005.

Ниже приведен код.

private void DeleteFiles()
        {
            string path = "c:\Example";
            if (Directory.Exists(path ))
            {

                Cursor = Cursors.No;
                long deletedSize = 0;
                frmLoading frmProgress = new frmLoading();
                frmProgress.ShowInTaskbar = false;
                frmProgress.lblLoading.Text = "Deleting Files ...(0%)";
                frmProgress.Show(frmMain);                
                frmProgress.Refresh();                
                frmMain.Refresh();                

                long totalSize = DirSize(new DirectoryInfo(path));
                EmptyFolder(new DirectoryInfo(path), totalSize, frmProgress, ref deletedSize);
                Directory.Delete(path, true);
                frmProgress.Close();
                Cursor = Cursors.Default;
            }
        }

private void EmptyFolder(DirectoryInfo directoryInfo, long totalSize, frmLoading frmProgress ,ref long deletedSize)
        {

            short percent;
            //long deletedSize=0;
            try
            {

                foreach (FileInfo file in directoryInfo.GetFiles())
                {
                    try
                    {
                        deletedSize += file.Length;
                        file.Delete();
                        percent = Convert.ToInt16((deletedSize * 100) / totalSize);
                        frmProgress.lblLoading.Text = "Deleting Files ...(" + percent.ToString() + "%)";      // Here progress form label is updating.                                          
                        frmProgress.Refresh();

                    }
                    catch (Exception ex)
                    {

                    }
                }

                foreach (DirectoryInfo subfolder in directoryInfo.GetDirectories())
                {
                    EmptyFolder(subfolder, totalSize,frmProgress,ref deletedSize);
                }
            }
            catch (Exception ex)
            {

            }
        }

Это ошибка

Ваша помощь может быть оценена по достоинству.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...