c# - 如果在运行子窗体窗口时单击父窗体会冻结,直到关闭子窗体
问题描述
我有一个进程,在该进程中它必须从文件夹中删除文件。删除文件时,自定义进度表单正在打开并以百分比显示已删除状态。这工作正常。但是,如果我单击/双击父表单或进度表单应用程序正在冻结并且进度表单停止以更新状态(它在标签中)。删除过程正在运行,但状态未在进度表上更新。此应用程序在 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)
{
}
}
您的帮助可能会不胜感激。
谢谢
解决方案
推荐阅读
- flutter - Flutter 如何使用 path_provider 获取本地下载文件夹
- windows - Steam 桌面验证器,mafiles 已加密
- typescript - 如何从泛型实例中获取目标类名?
- .net-core - 从 NuGet 包中排除目标框架
- azure-ad-b2c - 在 AzureB2C 自定义策略中调整电子邮件验证用户界面
- r - R:用连续的0替换字符串,然后用1替换三个
- sql - 使用数据库事务确保只有一个进程从作业表中获取作业
- java - RxJava Publisher 到 Pojo 以获取 json 响应
- django - Django translation.activate() - 在哪里这样做以及如何调试?
- python - KivyMD (Python) - 导航抽屉 - 按钮突出显示