一般情況下,線上程間是不能交換資料的,不過在相同應用程式定義域中的線程則可以共用應用程式定義域的資料。我們可以通過AppDomain的GetData和SetData方法來實現這一功能。具體見原始碼。
1using System;
2using System.Threading;
3
4namespace ConsoleDemo
5{
6 /**//// <summary>
7 /// Class1 的摘要說明。
8 /// </summary>
9 class Class1
10 {
11 /**//// <summary>
12 /// 應用程式的主進入點。
13 /// </summary>
14 [STAThread]
15 static void Main(string[] args)
16 {
17 //
18 // TODO: 在此處添加代碼以啟動應用程式
19 //
20 int inputParam = 10;
21
22 Thread demoTd = new Thread(new ThreadStart(Run));
23 demoTd.IsBackground = true;
24
25 Thread.GetDomain().SetData("demo", inputParam); //設定應用程式定義域的資料槽的資料
26 demoTd.Start();
27 Console.Read();
28 }
29
30 static void Run()
31 {
32 int tmp = 0;
33 Console.WriteLine(tmp);
34 try
35 {
36 tmp = Convert.ToInt32(Thread.GetDomain().GetData("demo")); //讀取應用程式定義域中的資料槽資料
37 }
38 catch(Exception exp)
39 {
40 Console.WriteLine(exp);
41 Console.Read();
42 }
43 Console.WriteLine(tmp);
44 Console.Read();
45 }
46 }
47}
48