0

ゲーム オブジェクトを表すテキスト ファイルがある状況にいます。私がしなければならないことは、ファイルを解析して、ゲーム オブジェクトが描画されるポイントを取得することです。例えば

fruits.txt
pear 10, 20
orange 10,38

ポイントを grep するたびに、ディスパッチャ begininvoke を使用して、新しいフルーツを画面に更新します。これは、単一のスレッドを呼び出すよりもうまく機能します。複数の画面でポイントを並行して更新すると、非常に遅くなり、画面への描画中にハングしたり、フレームがジャンプしたりします。これは、BeginInvoke がメッセージをキューに入れているためですか? 凍結にもかかわらず、BeginInvoke は Invoke よりも高速に動作しますが、Invoke の更新はよりスムーズです。BeginInvoke を「メッセージをフラッシュ」して画面に表示するにはどうすればよいですか。ポイントをキューに保存し、まだキューに何かがあるときに画面に描画できるという別の投稿のアイデアがありましたが、違いはありませんでした。アイデアはありますか?ありがとう。

4

1 に答える 1

0

MSDN Control.BeginInvoke()によると:

コントロールの基になるハンドルが作成されたスレッドでデリゲートを非同期的に実行します。

あなたの場合、BeginInvoke を繰り返し呼び出すと、MAIN UI スレッドに多くの呼び出しが追加され、他の作業が滞ります。

同じスレッドで複数の描画を非同期に実行しようとするよりも、ポイントをキューにまとめて一度に画面に描画する方が間違いなく最善です。

于 2012-06-11T18:21:33.053 に答える