繁体   English   中英

通过一个可能从多个线程触发的事件处理程序更新Winform ListView控件

[英]Updating Winform ListView control by one event handler that may be fired from several threads

我有一个“ Win Form”应用程序,该应用程序侦听可能从某些不同线程引发的事件。

在该事件上,我想更新“列表视图”控件。 当然,我可能需要使用Invoke,但我的问题是:我应该在要构建的函数上使用锁来更新“列表视图”控件吗?

请注意,我仅通过表单中的一个函数并且仅通过一个事件来更新列表视图,但是一个以上的线程可能会引发同一事件。

是否所有线程可能触发的所有事件仅由主线程处理,以便它们将被一个一个地执行?

谢谢。

如果您认为该事件可能同时在多个线程中触发,或者至少在完成更新之前再次触发,那么您应该锁定。

很简单的东西:

lock(myListView) {
  updateMyListView();
}

应该足够了。 锁定列表视图对象仍应允许您对其进行编辑。

提醒一下,这不会阻止其他事情编辑列表视图, 只有具有自己的lock(myListView)块的代码才会注意该锁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM