7.使用System.Runtime.Remoting.Contexts.SynchronizationAttribute對類對象進行同步控制
當我們確定某個類的實例在同一時刻只能被一個線程訪問時,我們可以直接將類標識成Synchronization的,這樣,CLR會自動對這個類實施同步機制, 實際上,這裡面涉及到同步域的概念,當類按如下設計時,我們可以確保類的實例無法被多個線程同時訪問
1).在類的聲明中,添加System.Runtime.Remoting.Contexts.SynchronizationAttribute屬性。
2).繼承至System.ContextBoundObject
需要注意的是,要實現上述機制,類必須繼承至System.ContextBoundObject,換句話說,類必須是上下文綁定的.
一個示范類代碼如下
[System.Runtime.Remoting.Contexts.Synchronization]
publicclassSynchronizedClass:System.ContextBoundObject
{
}
還有AutoResetEvent,ManualReset,EventWaitHandle,Semaphore等可以實現資源的控制,不過它們更多是是基於一種事件喚醒的機制, 如果有興趣可以查閱MSDN相關的文檔