TCP 経由でオブジェクトの更新を通信する複数のクライアントと単一のサーバーがあります。
基本的に、サーバーはオブジェクトにアクセスするアルゴリズムを実行しますが、これらは TCP 経由で送信される更新時に変更される可能性があります。
データベースに対して更新をチェックし、ローカル メモリまたはデータベース サーバー間でデータに違いがある場合にのみ更新を送信するようにフラグを設定しました。問題は、オブジェクトの反復中に変更が発生した場合です。
アルゴリズムはバックグラウンド スレッドから実行され、要約されたコード アーキテクチャは次のようになります。これはイベント ドリブンです。
アルゴリズムのバックグラウンド スレッド:
Private algorithm As New NewAlgorithmTest
Private Sub bg_workerAlgorithm_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles bg_workerAlgorithm.DoWork
algorithm.RunAlgorithm()
End Sub
Private Sub bg_workerAlgorithm_RunWorkerCompleted(sender As System.Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bg_workerAlgorithm.RunWorkerCompleted
bg_workerAlgorithm.RunWorkerAsync()
End Sub
クライアントから受信した TCP メッセージ:
Private Sub Client_MessageReceived(sender As Object, e As TcpClient.MessageRecievedEventArgs)
Dim message As String = e.Message
'figure out which object to update based off message and set it as updatedObject
dim updatedObject
updatedObject.GetLatest()
End Sub
この問題を解決するにはどうすればよいですか?