问题一,线程的基本操作,例如:暂停、继续、停止等

 我不建议使用Thread类提供的SuspendResume以及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);
        }
Code

相关文章: