0
私は解決しようとしている問題をテストするために、次のコードを使用しています。Vb.net WPFディスパッチャーデリゲートメモリリークのヘルプ
Class MainWindow
Dim bw As BackgroundWorker = New BackgroundWorker()
Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
AddHandler bw.DoWork, AddressOf bw_DoWork
AddHandler bw.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
bw.RunWorkerAsync()
End Sub
Private Sub bw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
For i As Integer = 0 To 250000
Dim d As New test_delegate(AddressOf test)
Dispatcher.Invoke(d, " SUPER SUPER SUPERSPERSUPERSUPERvSUPERSUPERSUPERSUPERv LONG Test")
Next
End Sub
Private Delegate Sub test_delegate(ByVal txt As String)
Private Sub test(ByVal txt As String)
txtTest.Text = txt
End Sub
End Class
アプリケーションのメモリがゆっくりではあるが顕著にリークします。
作成している各代理人をどのようにクリーンアップ(または処分)しますか? d.disposeが存在しないため?
ありがとうございました!
私はこの例を実行しましたが、私は任意のメモリリークが表示されません。私は時間の経過と共にメモリがわずかに増加していますが、250kのデリゲートを作成するオーバーヘッド以上のものはないことを示しているものはありません。 – rossisdead
それは本当ですが、メモリ内の250kのデリゲートは決して去らない...私は彼らと一緒にやった後、どうやって離れさせるの? – tcables