0

私のアプリケーションは Web サービス呼び出しを実行し、それが発生すると、IsExecuting ステータスが true に設定され、実行ボタンが無効になります。この期間中はアプリケーションが応答しないため、プロセスを変更して、実行が別のスレッドで行われるようにします。しかし、私が今気づいている問題は、実行ボタンがまだ無効になっていて、インターフェイスをクリックしたときにのみボタンが有効になることです。どうすればこれを修正できますか?

編集: コードビハインド:

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}"/>
4

2 に答える 2

2

CanExecuteコマンドのステータスを更新する必要がありますか? を呼び出すだけCommandManager.InvalidateRequerySuggested()で、CanExecuteバインドされたコマンドで再評価されます。

于 2011-07-29T13:20:36.103 に答える
0

問題をよりよく理解するために、いくつかのコードを投稿する必要があると思います。

別のスレッドからコントロールのフォームのステータスを変更できないため、スレッドの問題であると確信しています。

デリゲートを使用して、他のスレッドからボタンのステータスを更新するだけでよいと思います

C#で別のスレッドからGUIを更新するには?

于 2011-07-29T13:18:13.340 に答える