Hel*_*der 2 c# status backgroundworker progress-bar
我正在构建一个小应用程序,用于计算从任何给定文件到多种类型的散列算法的散列.
为简单起见,我将只关注一个处理器密集的算法,即使文件大约为15mb,计算哈希大约需要半分钟.
我正在使用BackgroundWorker运行计算(我不确定这是否是一种正确的计算方法,但我只是在尝试).
现在,我希望有一个进度条,它将显示哈希值,但我不知道如何获得所需的最大值以及放置DoStep方法的位置.
有任何想法吗?
我的代码:
private void btnBrowse_Click(object sender, EventArgs e)
{
ofdBrowse.Filter = "All Files|*.*";
ofdBrowse.Title = "Open file.";
if (ofdBrowse.ShowDialog() == DialogResult.OK)
{
txtPath.Text = ofdBrowse.FileName;
bwWorker.RunWorkerAsync();
}
}
private void bwWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
t5 = hash.HashSHA512(txtPath.Text);
}
void bwWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
txtSHA512.Text = t5;
}
Run Code Online (Sandbox Code Playgroud)
为了能够监视进度,您必须以小增量进行哈希.然后,您将能够计算完成自己的文件的百分比.
这个构建块将是HashAlgorithm.TransformBlock
和HashAlgorithm.TransformFinalBlock
.
调用TransformBlock
循环,使用事件或BackgroundWorker.ReportProgress
将进度传达给UI.
这个较旧的问题有一个很好的使用示例的答案TransformBlock
,并且在文档中也有一个示例 TransformBlock
.
归档时间: |
|
查看次数: |
907 次 |
最近记录: |