您好,登录后才能下订单哦!
C#中怎么实现同步线程,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
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#中怎么实现同步线程的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。