2010-11-27 14 views
1

埋め込みリソースに格納されたスクリプトを実行するPowerShellカスタムホストを持つWPFアプリケーションがあります。ロードした後、ユーザーが実行ボタンをクリックして、スクリプトが呼び出されますが、私は次のエラーが表示されます。WPFスレッドとカスタムPowershellホスト - ユーザーがコマンドを中断したためにコマンド実行が中止されました

コマンドの実行は、ユーザーがコマンドに

を中断するので、ユーザーを停止し(つまり、私)に何もしませんでした私はこれがスレッド問題のいくつかの並べ替えであると推測しているので、スクリプトをinterupt。

このアプリケーションでは、コマンドラインパラメータも使用できます。コマンドラインパラメータを使用すると、スクリプトはすぐに実行されます。私が最初にこの機能を追加すると、スクリプトが完全に走ったが、これが完了するまで、私はWPFのUIを参照してくださいdidntの私は、メインウィンドウのビューモデルの起動時に次の追加:

 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スレッド上のコード。これは私がかなり頻繁に使うちょっとしたトリックであり、ほとんどは大丈夫です。

私が知っている長い質問ですが、誰かが私が間違っていることを知っていますか?

プロセスが実行されているときにデータバインディングを使用してuiを更新する際に問題が発生することがあります。例えば、私はステータスバーにIDLEとBUSYを切り替えるステータスインジケータを持っていますが、これは遅すぎるまで変わらないようです。バインディングは正常に動作していますが、私は古いVB DoEvents()を呼び出す必要があります。

乾杯

答えて

0

はコーヒーと数分のデバッグ後にこれを解決しました。

私はPromptForChoiceメソッドを完全に実装していなかったので、erorrがありました。

ただし、バインディングの更新にはまだ問題があります。

関連する問題