问题一,线程的基本操作,例如:暂停、继续、停止等
我不建议使用Thread类提供的Suspend、Resume以及Abort这三个方法,前两个有问题,好像在VS05已经屏蔽这两个方法;对于Abort来说,除了资源没有得到及时释放外,有时候会出现异常。如何做呢,通过设置开关变量来完成
问题二,如何向线程传递参数或者从中得到其返回值;
我不建议使用静态成员来完成,仅仅为了线程而破坏类的封装有些得不偿失。那如何做呢,通过创建单独的线程类来完成
//委托 public delegate double weiTuo(double a, double b); weiTuo w; private void btn_Begin_Click(object sender, EventArgs e) { //Thread th_thread = new Thread(); w = new weiTuo(getCount); //异步调用中的参数和返回值 AsyncCallback callback = new AsyncCallback(AsyncCallbackImpl); w.BeginInvoke(1, 2, callback, null); } //线程调用的方法 double getCount(double a, double b) { return a + b; } /// <summary> /// 线程完成之后回调的函数 /// </summary> /// <param name="ar"></param> public void AsyncCallbackImpl(IAsyncResult ar) { //获取执行完后的返回值 double re = w.EndInvoke(ar); MessageBox.Show(" " + ar.AsyncState); }