[問題] Event裡若有共用變數,需要lock嗎?
想請問一下,Event觸發的Function內,
若是會存取共用變數,需要弄個lock嗎?
認知上,許多物件都會呼叫這個callback function,
所以理論上應該要加? 謝謝。
--
webSocketHandler.TextMessageReceived += ((sendor, msg) =>
{
BroadcastMessage(ClientName, msg);
});
webSocketHandler.Closed += (sendor, arg) =>
{
BroadcastMessage(ClientName, ClientName + " Disconnected!");
_handlers.Remove(ClientName);
};
webSocketHandler.Opened += (sendor, arg) =>
{
BroadcastMessage(ClientName, ClientName + " Connected!");
};
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.128.217
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1523516841.A.246.html
→
04/12 15:11,
7年前
, 1F
04/12 15:11, 1F
可能會有吧?
同樣的物件建立了好幾個,大家都用同樣的callback function,
其中_handlers為共用的全域變數,是有可能同時存取到的,
例如:同時有物件觸發Closed事件的話…
抱歉,EventHandler使用次數不多,不太確定我的理解是否有誤?
還是說…EventHandler是會排隊被執行的呢? 謝謝。
※ 編輯: james999 (220.132.128.217), 04/12/2018 15:28:16
→
04/12 17:29,
7年前
, 2F
04/12 17:29, 2F
→
04/12 18:03,
7年前
, 3F
04/12 18:03, 3F
→
04/12 18:03,
7年前
, 4F
04/12 18:03, 4F
謝謝s大解說,明顯我的案例就是會取(做刪除的動作),
那麼我在看看這個dll內是否為一條thread哦!
主要是想到…原作者提供的範例就是這麼做的,
既然他沒有加上lock,就會覺得應該不用加,
只是不加的理由我並不曉得原因XD
現在搞清楚了,謝謝哦:)
※ 編輯: james999 (220.132.128.217), 04/12/2018 18:41:18
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章