none
Task线程问题请教 RRS feed

  • 问题

  • C#我使用TASK创建线程遇到一个问题,请各路高手赐教

    我的需求是,用TASK创建线程,运行一个函数funA。函数中读外设的值,将读过来的值,即时的赋给主窗体的控件。在主线程中,我需要等待tsk1线程运行结束后,再继续后面的代码。

    问题在于:当我通过Task.WaitAll等待线程执行结束,程序会假死。删除Task.WaitAll(tsk1)后,设断点查看Tsk1的状态一直为“Running”。

    请教各位,我该如何编写这段代码??

            private void button1_Click(object sender, EventArgs e)
            {
                Task tsk1 = Task.Factory.StartNew(() => funA());
                Thread.Sleep(1000);
                Task.WaitAll(tsk1);          
                等待,tsk1结束后,继续运行后面的代码。
            }
            private string funA()
            {

               ……一些运算

                this.Invoke(new Action(
                        () => { this.label1.Text = "结果1"; }));
    ……继续运算
                this.Invoke(new Action(
                        () => { this.label2.Text = "结果2"; }));

    ……继续运算

            }


    2015年3月12日 1:35

答案

全部回复