gpt4 book ai didi

c# - Winform ListViewItem 选中状态切换

转载 作者:行者123 更新时间:2023-11-30 18:07:37 25 4
gpt4 key购买 nike

我对 winforms 的竞争条件有疑问。

  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;
}
}

有时消息框会显示两次。执行此操作的正确方法是什么?提前致谢!

最佳答案

你能不能在它周围加一把简单的锁?此外,我建议切换 Checked 逻辑的工作方式以稍微简化函数(删除中间函数返回)

private static object fooLock = new object();
void foo(object sender, ItemCheckedEventArgs e)
{
lock (fooLock)
{
if (e.Item.Checked)
{
if (bar(e.Item.Index))
{
MessageBox.Show( ... )
e.Item.Checked = false;
}
}
}
}

提高性能的方法有很多,但至少应该停止竞争条件?

关于c# - Winform ListViewItem 选中状态切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3871908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com