国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

CallContext的LogicalCallContext在多線程環境下面公用變量

2019-11-17 02:52:40
字體:
來源:轉載
供稿:網友

CallContext的LogicalCallContext在多線程環境下面公用變量

壓根名聽說過這個類的看這里:如何實現對上下文(Context)數據的統一管理

原來以為CallContext就可以直接在多線程環境下面共享使用的,今天突然想到:asp.net環境下面,設置來設置去的,對象不就被多個客戶端搞亂了嗎?

隨做了以下代碼測試:

static void Main(string[] args)        {            CallContext.LogicalSetData("key", "1");            Thread trd = new Thread(new ThreadStart(() =>            {                Console.WriteLine("first thread : " + CallContext.LogicalGetData("key"));                Thread.Sleep(1000);                Console.WriteLine("first thread : " + CallContext.LogicalGetData("key"));            }));            trd.Start();            Thread.Sleep(100);            CallContext.LogicalSetData("key", "2");            Thread trd1 = new Thread(new ThreadStart(() =>            {                Console.WriteLine("second thread : " + CallContext.LogicalGetData("key"));            }));            trd1.Start();            Console.Read();        }

結果是這個鳥樣子:

看來是我想多了啊,汗。。。

摘抄一段官方點的說明(來自artech大神的博客):

LogicalCallContext:LogicalCallContext 類是在對遠程應用程序域進行方法調用時使用的 CallContext 類的一個版本。CallContext 是類似于方法調用的線程本地存儲的專用集合對象,并提供對每個邏輯執行線程都唯一的數據槽。數據槽不在其他邏輯線程上的調用上下文之間共享。當 CallContext 沿執行代碼路徑往返傳播并且由該路徑中的各個對象檢查時,可將對象添加到其中。當對另一個 AppDomain 中的對象進行遠程方法調用時,CallContext 類將生成一個與該遠程調用一起傳播的 LogicalCallContext。只有公開 ILogicalThreadAffinative 接口并存儲在 CallContext 中的對象被在 LogicalCallContext 中傳播到 AppDomain 外部。不支持此接口的對象不在 LogicalCallContext 實例中與遠程方法調用一起傳輸。

"CallContext 類將生成一個與該遠程調用一起傳播的 LogicalCallContext。"

這里應該是說只管傳遞過去,不管引用關系了,類似“值傳遞”吧。

歡迎大神斧正。。。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 离岛区| 宽甸| 晋州市| 达日县| 荃湾区| 平顺县| 乌什县| 青浦区| 平南县| 云龙县| 石柱| 台南市| 冷水江市| 乌苏市| 南木林县| 措勤县| 桂东县| 平遥县| 中阳县| 昌邑市| 浑源县| 衡南县| 巴彦淖尔市| 上饶市| 屯留县| 延津县| 玉田县| 新野县| 保定市| 偏关县| 肇东市| 尉氏县| 兰溪市| 内乡县| 汉中市| 嘉兴市| 宝丰县| 兴城市| 长乐市| 武宣县| 托里县|