C#语言有很多值得学习的地方,这里我们主要介绍C#同步线程,包括介绍lock声明和Thread.Join方法等方面。
C#同步线程
在C#同步线程方面,C#提供了几种方法。在上述计算平方的例子中,需要与执行计算的C#同步线程,以便等待它执行完并且得到结果。另一个例子是,如果在其它线程中排序一个数组,那么在使用该数组前,必须等待该处理完成。为了实现同步,C#提供了lock声明和Thread.Join方法。
lock声明
- public void CalcSquare1()
- {
- lock( typeof(SquareClass))
- {
- Square = Value * Value;
- }
- }
lock可以得到一个对象引用的***锁,使用时只要将该对象传送给lock就行了。通过这个***锁,可以确保多个线程不会访问共享的数据或者在多个线程上执行的代码。要得到一个锁,可以使用与每个类关联的System.Type对象。System.Type对象可以通过使用typeof运算得到,如表7所示。
Thread.Join方法
- private void button1_Click(object sender, System.EventArgs e)
- {
- SquareClass oSquare =new SquareClass();
- t2 = new Thread(new ThreadStart(oSquare.CalcSquare));
- oSquare.Value = 30;
- t2.Start();
- if( t2.Join (500) )
- {
- MessageBox.Show(oSquare.Square.ToString ());
- }
- }
Thread.Join方法可以等待一个特定的时间,直到一个线程完成。如果该线程在指定的时间内完成了,Thread.Join将返回True,否则它返回False。在上述平方的例子中,如果不想使用触发事件的方法,可以调用Thread.Join的方法来确定计算是否完成了。以上介绍C#同步线程。
【编辑推荐】