none
SyncLock幾個問題 RRS feed

  • 問題

  • 最近利用線上文件研究到SyncLock, 線上文件有些敘述不甚瞭解,

    文中提到"執行 SyncLock 區塊時,您無法變更 lockobject 的值。這個機制需要鎖定物件保持不變。"

    1.想請問何謂改變"鎖定物件",可否舉個違反的例子(程式)?

    文中提到"不該使用 Me 關鍵字,提供執行個體資料的鎖定物件。如果類別之外的程式碼具有類別執行個體的參考,則它可以使用該參考做為 SyncLock 區塊 (完全不同於您的區塊) 的鎖定物件,保護不同的資料。如此一來,您的類別和其他類別可以阻止彼此執行其不相關的 SyncLock 區塊。"

    2.還是不太瞭解使用Me的缺點在那(很多書都叫我們直接使用),可否舉個例子(程式)進行說明?

    3.文中很強調"鎖定物件"在SyncLock 的使用上的重要性,是否可以白話點說明"鎖定物件"扮演的角色?

     

    2010年5月28日 上午 09:11

解答

  • 範例:

    開會簽到單:A 簽名時,B 不能同時簽名。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 小見光二 2010年5月29日 上午 08:14
    2010年5月28日 上午 11:51
  • SyncLock Me會造成鎖定範圍過廣, 因為鎖定整個物件, 而且鎖定的並非Private資料, 容易發生死結的現象, 所以應該避免, 請參考:Dr. GUI 特別專欄:不要鎖定型別物件!
    • 已標示為解答 小見光二 2010年5月29日 上午 08:14
    2010年5月29日 上午 06:42

所有回覆

  • 範例:

    開會簽到單:A 簽名時,B 不能同時簽名。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 小見光二 2010年5月29日 上午 08:14
    2010年5月28日 上午 11:51
  • SyncLock Me會造成鎖定範圍過廣, 因為鎖定整個物件, 而且鎖定的並非Private資料, 容易發生死結的現象, 所以應該避免, 請參考:Dr. GUI 特別專欄:不要鎖定型別物件!
    • 已標示為解答 小見光二 2010年5月29日 上午 08:14
    2010年5月29日 上午 06:42