簡體   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