1

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

命令执行停止,因为用户中断了命令

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

该应用程序还接受一个命令行参数,告诉脚本立即执行。当我第一次添加此功能时,脚本运行完美,但直到完成后我才看到 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() 一样。

干杯

4

1 回答 1

0

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

错误是因为我没有完全实现 PromptForChoice 方法。

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

于 2010-11-27T23:41:51.707 回答