У меня проблема с условиями гонки с winforms.Winform ListViewItem Проверено состояние Toggle
listViewCollections.ItemChecked += foo //Somewhere
void foo(object sender, ItemCheckedEventArgs e)
{
if (e.Item.Checked == false) return;
bool flag = bar(e.Item.Index);
if (flag) {
MessageBox.Show(...)
e.Item.Checked = false;
}
}
Иногда окно сообщения отображается дважды. Каков правильный способ сделать это? Заранее спасибо!
Вы программно устанавливаете элементы как отмеченные? Единственный способ воспроизвести вашу проблему - установить более одного элемента, как это было проверено программно. – kevev22
Да, фактически сразу после предложения first if есть цикл, который очищает (устанавливает в false) некоторые другие флажки в том же ListView. Я не думал, что это будет актуально. Я ожидал, что некоторые события будут уволены, а затем пойманы первым, если это будет условно. – Gleno
Возможно, это поможет: http://msdn.microsoft.com/en-us/library/c5kehkcz(v=VS.100).aspx – kyndigs