從documentation:ContextStaticAttribute究竟是什麼?
靜態字段標明ContextStaticAttribute沒有上下文之間共享 。如果指定的靜態字段在不同的上下文中訪問,則它將包含不同的值。原樣使用此 屬性,並且不從其派生。
以下示例顯示該屬性的語法:
[ContextStatic] static int f=7;
遺憾的是它並沒有明確什麼是在這種情況下「背景」的意思。有人可以舉例說明何時使用這個屬性?
從documentation:ContextStaticAttribute究竟是什麼?
靜態字段標明ContextStaticAttribute沒有上下文之間共享 。如果指定的靜態字段在不同的上下文中訪問,則它將包含不同的值。原樣使用此 屬性,並且不從其派生。
以下示例顯示該屬性的語法:
[ContextStatic] static int f=7;
遺憾的是它並沒有明確什麼是在這種情況下「背景」的意思。有人可以舉例說明何時使用這個屬性?
在使用遠程處理的情況下,屬性很重要,就像從MarshalByRefObject派生的類一樣。然後,您的代碼將與客戶端程序中的代理一起工作,這是一個假類對象,看起來與原始類完全相同,但其方法由CLR實現,並將方法參數序列化爲在服務器上運行的實際對象。通常在另一臺機器上。
領域是這樣一個類的問題,他們不能用替代方法僞造。這是抖動處理的事情。當它檢測到對MRBO對象中字段的訪問時,它不會生成直接讀/寫字段的代碼,而是在CLR中調用幫助器方法。其中知道對象是代理還是實際對象,並直接返回字段值或進行遠程調用。
這增加了開銷,當然,這是一個可以非常頻繁訪問的靜態字段的問題。 [ContextStatic]屬性表示您不關心具有實際的靜態字段值,本地副本足夠好。或者如果由於某種原因,在本地跟蹤狀態很重要,可以故意使用它。我想不出一個很好的例子。框架程序員也沒有在框架代碼中的任何地方使用它。
正如在評論中指出,在文檔又見節確實指向遠程處理的文檔上下文這使得它更清楚一點以何種方式來挖掘。
上,我是我自己能找到主題的最佳資源是http://blogs.msdn.com/b/tilovell/archive/2011/02/07/contextboundobject-part-1-making-contexts.aspx
總之 - 病例的99%,這個屬性是不是看起來第一眼什麼。
我覺得它使用.NET Remoting和它的上下文類 – Jehof 2013-04-10 14:00:43
請參閱[這個答案](http://forums.asp.net/post/2428493.aspx)。 – Magnus 2013-04-10 14:09:20
該文檔具有['Context']的鏈接(http://msdn.microsoft.com/zh-cn/library/system.runtime.remoting.contexts.context.aspx):「一旦將對象放入一個上下文,它一直存在於它中,可以綁定到上下文的類被稱爲上下文綁定類,當從另一個上下文訪問時,這些類通過使用代理直接引用。 – 2013-04-10 14:37:16