gpt4 book ai didi

.net - 如何显示另一个库对文件执行操作的进度?

转载 作者:行者123 更新时间:2023-12-02 08:33:19 24 4
gpt4 key购买 nike

我正在使用 System.Security.Cryptography.SHA512Cng.ComputeHash 计算一个非常大的文件的 SHA-512 哈希值,并且我想为其显示一个进度条。如何在不重新实现算法的情况下检查方法的完成情况?

最佳答案

您可以子类化Stream!这是一个从文件读取的 ProgressStream:

Public Class ProgressStream
Inherits FileStream

Public Event ProgressChanged(sender As ProgressStream, progress As Integer)

Public Sub New(fileName As String)
MyBase.New(fileName, FileMode.Open, FileAccess.Read)
End Sub

Public ReadOnly Property Progress() As Integer
Get
Return CInt(Me.Position / Me.Length * 100)
End Get
End Property

Public Overrides Function Read(array() As Byte, offset As Integer, count As Integer) As Integer
Read = MyBase.Read(array, offset, count)
RaiseEvent ProgressChanged(Me, Me.Progress)
End Function
End Class

只需处理 ProgressChanged 事件即可。

相同的方法适用于所有其他类型的流,您还可以将其用于某些其他长时间运行的任务,这些任务根据需要读取文件而不是一次读取所有文件。

关于.net - 如何显示另一个库对文件执行操作的进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com