3

を使用して非常に大きなファイルの SHA-512 ハッシュを計算してSystem.Security.Cryptography.SHA512Cng.ComputeHashいます。その進行状況バーを表示したいと思います。アルゴリズムを再実装せずにメソッドの完了を確認するにはどうすればよいですか?

4

2 に答える 2

2

サブクラス化できますStreamProgressStreamファイルから読み取る は次のとおりです。

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イベントを処理するだけです。

同じ方法が他のすべてのタイプのストリームに適用されます。また、一度にすべてではなく、必要に応じてファイルを読み取る特定の長時間実行タスクにも使用できます。

于 2012-08-04T01:06:19.107 に答える