1

そのリストに別の整数を追加するために呼び出して、すべての呼び出しでList<int>更新するUpdate()Add()

を呼び出すたびにDraw()foreachその上でList保存された を使用intして画面に何かを描画します。

私が抱えている問題は、最初の数フレーム (つまり、Update への数回の呼​​び出し) で、リストが同期していないことです。追加したものが表示されません。

このコードを使用して、ファイルにトレースを追加しました。

log.WriteLine("start list with count " + Actions.Count);
int nextAction = getNextAction(); // right now this is just some additions
Actions.Add(nextAction);
movelog.WriteLine("end list with count " + Actions.Count);

私はこのトレースを取得します:

start list with count 0
end list with count 1

start list with count 0
end list with count 1

start list with count 0
end list with count 1

start list with count 0
end list with count 1

start list with count 0
end list with count 1

start list with count 1
end list with count 2

start list with count 2
end list with count 3

start list with count 3
end list with count 4

コードのこのセクションへの最初の数回の呼​​び出し (つまり、 への呼び出しUpdate()) でわかるように、リストに追加すると、次に呼び出されたときにリストに何も追加されなかったかのように魔法のように消えます。5回目以降、ようやく機能します。これは、実行全体でかなり一貫しています。

リスト オブジェクトをロックしようとしましたが、まったく同じ動作が得られます。

私のコードで何が起こっていますか? 私は困惑しています。私は並行して何もしていませんManagedThreadId。リストに追加するたびにトレースを試みましたが、スレッドIDは同じです。

4

1 に答える 1