3
4
5
6
7
8
9
10
11
12
13
14
15
static void Main() {
ThreadTest tt = new ThreadTest(); // Create a common
instance
new Thread (tt.Go).Start();
tt.Go();
}
// Note that Go is now an instance method
void Go() {
if (!done) { done = true; Console.WriteLine ("Done"); }
}
}
因为在相同的<B>ThreadTest</B>实例中,两个线程都调用了
<B>Go()</B>,它们共享了<B>done</B>字段,这个结果输出的是一
个"Done",而不是两个。
?
1
<A
href="http://images.cnblogs.com/cnblogs_com/miniwiki/WindowsLi
veWriter/C_12936/image_6.png"><IMG title=image
style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-
WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px;
MARGIN-RIGHT: 0px; BORDER-RIGHT-WIDTH: 0px" height=45
alt=image
src="http://images.cnblogs.com/cnblogs_com/miniwiki/WindowsLiv
eWriter/C_12936/image_thumb_2.png" width=640 align=left
border=0></A>
静态字段提供了另一种在线程间共享数据的方式,下面是一个以 done 为静态字段的例子:
?
1
2
3
4
5
6
7
8
9
class ThreadTest {
static bool done; // Static Kelds are shared between all threads
static void Main() {
new Thread (Go).Start();
Go();
}
static void Go() {