大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“C#多线程怎么启动Square”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#多线程怎么启动Square”吧!
创新互联服务项目包括巴中网站建设、巴中网站制作、巴中网页制作以及巴中网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,巴中网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到巴中省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
在实际工作中,还需要使用到C#多线程的许多复杂特性。其中一个问题就是如何将程序的数据由线程类的构造器传入或者传出。对于放到另外一个线程中的过程,既不能传参数给它,也不能由它返回值,因为传入到线程构造器的过程是不能拥有任何参数或者返回值的。为了解决这个问题,可以将过程封装到一个类中,这样,方法的参数就可使用类中的字段。
本文给出了一个简单的例子,计算一个数的平方。为了在一个新的线程中使用这个过程,将它封装到一个类中,在一个新的C#多线程启动Square过程。
public class SquareClass { publicdouble Value; public double Square; public void CalcSquare() { Square = Value * Value; } } 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(); }
在上述例子中,线程启动后,并没有检查类中的square值,因为即使调用了线程的start方法,也不能确保其中的方法马上执行完。要从另一个线程中得到需要的值,有几种方法,其中一种方法就是在线程完成的时候触发一个事件。下面所示的代码为SquareClass加入了事件声明。
public delegate void EventHandler(double sq);//说明委派类型 public class SquareClass { publicdouble Value; public double Square; public event EventHandler ThreadComplete;//说明事件对象 public void CalcSquare() { Square = Value * Value; //指定事件处理程序 ThreadComplete+=new EventHandler(SquareEventHandler); if( ThreadComplete!=null)ThreadComplete(Square);//触发事件 } public static void SquareEventHandler(doubleSquare ) //定义事件处理程序 { MessageBox.Show(Square.ToString ());} }
对于这种方法,要注意的是事件处理程序SquareEventHandler运行在产生该事件的线程t2中,而不是运行在窗体执行的线程中。
到此,相信大家对“C#多线程怎么启动Square”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!