CallContext

1.線程本地存儲區的專用集合對象,並提供對每個邏輯執行線程都唯一的數據槽。
2.數據槽不在其他邏輯線程上的調用上下文之間共享。

    class Program
    {
        static Jason_TestEntities Current
        {
            get
            {
                Jason_TestEntities dbContext = CallContext.LogicalGetData("CurrentContext") as Jason_TestEntities;
                if (dbContext == null)
                {
                    Console.WriteLine("重新獲取DBContext" + Thread.CurrentThread.ManagedThreadId);
                    dbContext = new Jason_TestEntities();
                    dbContext.Configuration.ValidateOnSaveEnabled = false;
                    CallContext.LogicalSetData("CurrentContext", dbContext);
                }
                return dbContext;
            }
        }

        static void Main(string[] args)
        {
            for (int i = 0; i < 5; i++)
            {
                ThreadStart threadStart = new ThreadStart(select);
                Thread thread = new Thread(threadStart);
                thread.Start();
            }
            Console.WriteLine("主線程結束");
            Console.Read();
        }

        static void select()
        {
            Console.WriteLine("線程開始" + Thread.CurrentThread.ManagedThreadId);
            Current.wolf_example.Add(new wolf_example()
            {
                Name = "name" + Current.wolf_example.Count(),
                Money = Current.wolf_example.Count(),
            });
            Current.SaveChanges();
            Console.WriteLine("線程結束" + Thread.CurrentThread.ManagedThreadId);
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章