閱讀531 返回首頁    go 微軟 go windows


不同線程之間傳遞數據

 一般情況下,在線程間是不能交換數據的,不過在相同應用程序域中的線程則可以共享應用程序域的數據。我們可以通過AppDomain的GetData和SetData方法來實現這一功能。具體見源代碼。
using System;
using System.Threading;

namespace ConsoleDemo
{
    /// <summary>
    /// Class 的摘要說明。
    /// </summary>
    class Class
    {
        /// <summary>
        /// 應用程序的主入口點。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            //
            // TODO: 在此處添加代碼以啟動應用程序
            //
            int inputParam = 10;

            Thread demoTd = new Thread(new ThreadStart(Run));
            demoTd.IsBackground = true;

            Thread.GetDomain().SetData("demo", inputParam);   //設置應用程序域的數據槽的數據
            demoTd.Start();
            Console.Read();
        }

        static void Run()
        {
            int tmp = 0;
            Console.WriteLine(tmp);
            try
            {
                tmp = Convert.ToInt32(Thread.GetDomain().GetData("demo"));  //讀取應用程序域中的數據槽數據
            }
            catch (Exception exp)
            {
                Console.WriteLine(exp);
                Console.Read();
            }
            Console.WriteLine(tmp);
            Console.Read();
        }
    }
}


最後更新:2017-04-03 18:51:56

  上一篇:go Android遊戲開發之橫豎屏的切換
  下一篇:go 美國“封殺”俄羅斯超級計算機製造商