[英]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.