0

カスタムTrackingParticipantを使用して、データベース内のいくつかの状態情報を更新しています。データベースには間違った値があることがあるので、Trackメソッドの動作は私が期待するものではないと思います。ドキュメントによると、「派生クラスに実装すると、追跡レコードを同期的に処理するために使用されます」少なくとも同じステートマシンインスタンスに対して、すべてのレコードが次々に実行されることを意図していました。

私が間違っている?トラックの実装をクリティカルセクションで常に保護する必要がありますか?全体的なパフォーマンスについて疑問に思っています...とにかく、もちろん、優先順位はシステムが期待どおりに機能することです。

ありがとう

4

1 に答える 1

0

Track()メソッドを実装する必要があるので、スレッドセーフであることに疑問の余地はありません。

ワークフローランタイムはTrack()が終了するまで続行されないため、複数のTrack()呼び出しを同時に取得することはありません。つまり、「遅い」データベース挿入はワークフローのパフォーマンスに影響を与えます。パフォーマンスにとって最良のことは、データを同時メモリ内キューに入れ、バックグラウンドスレッドを使用して実際のデータベース挿入を行うことです。

于 2012-08-10T15:16:30.820 に答える