WPF线程和自定义Powershell主机 - 由于用户中断了命令,命令执行停止

时间:2010-11-27 20:54:58

标签: wpf powershell powershell-sdk

我有一个带有PowerShell自定义主机的WPF应用程序,该主机运行存储在嵌入式资源中的脚本。加载后,用户单击执行按钮,脚本为Invoked但我看到以下错误:

由于用户中断了命令

,命令执行停止

用户(即我)没有做任何事情来中断脚本,所以我猜这是某种线程问题。

应用程序还接受命令行参数,该参数指示脚本立即执行。当我第一次添加此功能时,脚本运行完美,但我没有看到WPF ui,直到完成,所以我将以下内容添加到主窗口视图模型的启动中:

        var bgWork = new BackgroundWorker();
        bgWork.DoWork += (s,e) => { };
        bgWork.RunWorkerCompleted += (s,a) =>
        {
            var app = (Application.Current as App);

            if (app.ExecuteImmediate && StartCommand.CanExecute(null))
                StartCommand.Execute(null);

        };
        bgWork.RunWorkerAsync();

BackgroundWorker在UI线程上运行Completed代码。这只是我经常使用的一个小技巧,它主要工作正常。

所以,我知道一个很长的问题,但是有没有人知道我做错了什么?

作为一个方面或相关问题,我还在运行进程时通过数据绑定更新ui时遇到问题。例如,我在状态栏中有一个状态指示器,可以在IDLE和BUSY之间切换,但这似乎永远不会改变,直到为时已晚。绑定工作正常,但就像我需要调用旧的VB DoEvents()一样。

干杯

1 个答案:

答案 0 :(得分:0)

咖啡和调试几分钟后解决了这个问题。

有人因为我没有完全实现PromptForChoice方法。

但是,我仍然遇到更新绑定的问题。