2011-01-24 5 views
0

を変更*で選択した各項目を通って行きます。たとえば、listView内のすべてのアイテムを選択し、上記のコードを実行するボタンを押したとします。コードが実行されている間、listViewが更新され、項目の1つが削除されたとしましょう。コードはまだ正常に実行されますか?は、これは私がリストビューの各項目を通過するために使用するコードです*リストビュー

答えて

3

アイテムが別の反復のために許可され、前にアイテムが次の行にアクセスされたループのちょうど後の状態削除される可能性があります。

これを考えると、これは私が信頼できるコードと呼ぶものではありません。スレッドが同じリソースに同時にアクセスしようとしないようにする必要があります。ミューテックスを推奨するかクリティカルセクションを使用することをお勧めします。

0

まず、foreachを使用する必要があります。しかし、 "成功"反復はあなたの定義に依存します。 foreach反復の途中でリストが変更された場合、例外がスローされます。既定の整数インデックスを既に使用している場合、例外はスローされませんが、その動作は予測できません。ミューテックスのようなスレッド同期を使って、リストの変更を気にせずにforeachを使って正常に反復できることを確認します。

関連する問題