У меня есть один процесс, в котором он должен удалить файлы из папки. При удалении файлов открывается пользовательская форма прогресса и отображается удаленный статус в процентах. Это работает нормально. Но если я щелкнул / дважды щелкнул по родительской форме или приложение формы прогресса зависает, и форма прогресса перестает обновлять статус (он находится в метке). Процесс удаления отстает, но статус не обновляется в форме выполнения.
Это приложение в 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)
{
}
}
Это ошибка
Ваша помощь может быть оценена по достоинству.
Спасибо