在winform中有一个进度条来显示c#文件加密所花费的时间
本文关键字:加密 文件 时间 显示 有一个 winform | 更新日期: 2023-09-27 18:06:31
目前我的应用程序正在对文件和文件夹进行加密,我试图有一个进度条,使应用程序有一个更好的界面,也知道加密需要多长时间
然而,这是我第一次使用进度条,我有点混淆了所有提到的术语,如后台工作者,步骤,最大等,我想知道有人知道如何创建和设置一个简单版本的进度条。提前谢谢。
在看到剑鱼的建议并尝试之后,这里是我的代码
这是我的代码的一部分,基于所提供的链接,我尝试了它在我使用部分代码到按钮
的部分 public LockPasswordBox(IFile[] info)
{
InitializeComponent();
ifile = info;
// To report progress from the background worker we need to set this property
backgroundWorker1.WorkerReportsProgress = true;
// This event will be raised on the worker thread when the worker starts
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
// This event will be raised when we call ReportProgress
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
}
// On worker thread so do our thing!
void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
// Your background task goes here
for (int i = 0; i <= 100; i++)
{
// Report progress to 'UI' thread
backgroundWorker1.ReportProgress(i);
// Simulate long task
System.Threading.Thread.Sleep(100);
}
}
// Back on the 'UI' thread so we can update the progress bar
void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// The progress percentage is a property of e
progressBar1.Value = e.ProgressPercentage;
}
按钮代码 private void lockButton_Click(object sender, EventArgs e)
{
// Start the background worker
backgroundWorker1.RunWorkerAsync();
问题是我按下按钮后…它只是直接弹出消息框加密成功。
如果您有Minimun = 1
, Maximum = 100
和Step = 1
,则需要调用PerformStep()
99次才能完成进度条
如果你不能从lControl.Encrypt(details)
获得关于操作进行了多远的准确信息,你就不知道何时更新进度条上的所有步骤。
MSDN文档中有一个关于如何移动进度条的简单示例
我也有类似的需求,这对我的任务很有帮助。希望对你也有帮助。
http://www.codeproject.com/Tips/83317/BackgroundWorker-and-ProgressBar-demo它非常简单,实际上你所要做的就是使用不那么神秘的reportprogress方法从后台worker报告进度,并且有一个方法在报告进度时更新进度条。
试着用这种方式实现它,如果你遇到了障碍,请发布你的代码。