我有一个带有 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() 一样。
干杯