他のプロセスメモリを読み取るアプリケーションがあります。私は最初に読む必要のあるさまざまな領域に対して複数のスキャンスレッドを持っていました。これはプロセッサーが集中していたので、私はオブザーバーのパターンと一緒に行くことにしました。私は奇妙な行動をしていることを除いて、すべてがうまくいった。Observerパターンを使用した奇妙な動作
は、ここで私は2つのレーダー(オーバーレイおよびマッピングされた)メモリスキャナに取り付けられ、暴徒の新しいリストに通知されたウォッチャクラスを持っている両方を持っている
を何が起こっているかです。ので、私はそれがMOBリスト更新通知をスキャナを待つに
オープンレーダ2(オーバーレイ)ウォッチャーの付着レーダ1(マップされた)を開きます。同じことが起こり、別のウォッチャーが付いています。
これまでのところすべてがうまくいいです。 リストのmobsには、そのうちの1つがIsFilteredOutです。このプロパティは、リストを受け取ったレーダーコードで設定されます。
私が何をするにしても、開かれる第2のレーダーは両方のレーダーのリストにあるmobのすべてのプロパティを変更します。あたかも私がrefでリストを渡しているかのようですが、私はそうではありません。私は実際にリストを渡すたびにmoblistクラスの新しいインスタンスを作成します。
ここに通知コードがあります。ご覧のとおり、私はmoblistクラスの新しいインスタンスを作成します。それはウォッチャークラス
''' <summary>
''' IWatcher MoblistUpdated Implementation
''' </summary>
''' <param name="Mobs">The Updated mob list</param>
''' <remarks></remarks>
Public Sub MobListUpdated(ByVal Mobs As MobList) Implements IWatcher.MobListUpdated
Try
PostNewMobList(Mobs)
Catch ex As Exception
End Try
End Sub
Public Sub PostNewMobList(ByVal Mobs As MobList)
_sync.Post(New SendOrPostCallback(AddressOf OnNewMobList), Mobs)
End Sub
Private Sub OnNewMobList(ByVal state As Object)
Dim mobs As MobList = TryCast(state, MobList)
Try
If mobs IsNot Nothing Then
RaiseEvent NewMobList(mobs)
End If
Catch ex As Exception
End Try
End Sub
で処理され、このエラーは私にナットを駆動して、任意の助けを大幅に高く評価されるであろう場所
Private Sub NotifyMobListUpdated(ByVal Mobs As List(Of MobData))
If Mobs IsNot Nothing Then
For Each w As Watcher In _watchers
If w.Type And WatcherTypes.MobList = WatcherTypes.MobList OrElse w.Type And WatcherTypes.All = WatcherTypes.All Then
w.MobListUpdated(New MobList(Mobs))
End If
Next
End If
End Sub
です。
おかげ
ありがとうございます、あなたは正しい方向に私を指摘しました。実際にUIのコードを変更して、リストのクローンを取得しました。 – bhmahler