WPF:非阻止UI

时间:2010-10-20 10:37:29

标签: wpf

我有两个复选框和一个按钮。在按钮单击处理程序下,

private void button1_Click(..)
{
 if(checkbox1.true) { //start a process }
 if(checkbox2.true) { //start process 2 once process 1 is done}

}

进程1和2都是异步启动的。如何设置进程2和进程1之间的依赖关系?如果在启动进程2之前完成进程1,我不想轮询。这会阻止UI。还有其他解决方案吗?

感谢

2 个答案:

答案 0 :(得分:1)

您可以查看Process课程的Exited事件。

有些事情:

Process p = ...
if(checkbox2.Checked)
    p.Exited = ... // Event handler that starts process 2

p.Start()

答案 1 :(得分:1)

实施后台工作程序以执行process1

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

在你的runworker完成事件检查中,看看是否选中了复选框2

//copy and pasted from msdn

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
                    if (e.Cancelled == true)
                    {
                        //dosomething
                    }
                    else if (e.Error != null)
                    {
                        //dosomething
                    }
                    else
                    {
                        if(checkbox2.Checked)
                        {
                           //fire off process 2
                         }
                    }
                }