私のアプリケーションはWebサービス呼び出しを実行し、実行するとIsExecutingステータスがtrueに設定され、実行ボタンが無効になります。アプリケーションはこの期間中応答しないので、私は別のスレッドで実行されているようにプロセスを変更します。しかし、私が今気づいている問題は、実行ボタンがまだ無効になっていて、インターフェイスをクリックしてボタンが有効になったときだけです。どうすればこの問題を解決できますか?WPF CanExecuteとThreadPool
EDIT:分離コードで :
private void Execute()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(ExecuteThread));
}
private bool CanExecute
{
get { return !IsExecuting; }
}
private void ExecuteThread(Object o)
{
IsExecuting = true;
// Process execution here ...
IsExecuting = false;
}
In Xaml:
<Button Content="Execute" Command="{Binding Path=ExecCommand}"/>
私はこれをExecuteThreadメソッドの最後の行に追加することでこれを試しましたが、それは役に立ちませんでした。 – Sys
@Sys、(Dispatcher.Current.Invokeを使用して)UIスレッドでこのメソッドを呼び出そうとしました。 –
私はApplication.Current.Dispatcher.Invokeを試しました(新しいアクション(デリゲート{IsExecuting = true;})));しかし再び動作しません... – Sys