Dot-Net

註冊 CancellationToken.None 是否安全?

  • April 3, 2014

為什麼以下甚至是合法的?

CancellationToken.None.Register(delegate { });

例如,為什麼Register不在這裡拋出異常?是因為以上內容相當於NOP嗎?

**背景:**問這個問題的原因是要了解在涉及註冊時是否需要對接受 a 的方法CancellationToken進行防禦性編碼CancellationToken.None

CancellationToken.None不是空引用,而是一個空的取消標記。因此,它確實有一個實例。註冊永遠不會觸發,因為源永遠不會註冊為被取消,但它會“正確地”通過。

但是,除非您小心處理正確返回的CancellationTokenRegistration,否則我仍然會對此進行檢查和編碼。


編輯:

CancellationToken.None經進一步調查,如果您對CancellationTokenRegistration. 這不會保留對您的對像或委託的引用,也不會形成洩漏,因此出於實際目的,它是無操作的。這應該是安全的,並且不應該要求您最終避免採取防禦措施。

引用自:https://stackoverflow.com/questions/5489553