長時間実行しているWCFサービスと、WPF経由でそれを使用するクライアントがあります。特定のプロセスのための完了率のクライアントに通知するためにプログレスバーを使用しています:私が持っている長時間実行するWCFサービスのWPFアプリケーションのプログレスバー
(WCFでのメソッド私はサービスにループカウンタに基づいた割合を表示できるようにする必要があります)バックグラウンドワーカーを使用して進捗率を表示しますが、進捗状況は正しく表示されません。 (値の間に0と100だけ表示されます)DEBUGモードではすべて動作しますが、RELEASEモードではうまく動作しません! (プログレスバーはDEBUGモードで順番に更新されます)
私はコールバック/ wsDualHttpBindingを使用しようとしましたが、これをすべてのクライアントに組み込むのが難しいです。だから、このオプションを落とさなければならなかった。非同期/
を待つに取り組ん
私はかなりの数のリンクをGoogleで検索しているが、何も私の問題に役立ちません。
WCFサービスからまだ完了していないメソッドから現在/実行中の値を取得する方法を教えてください。この値に基づいてプログレスバーの割合を設定できます。 (値の間で)
P.S:ちょうどそれを実装する方法を理解すること
public Progress()
{
// Start the BackgroundWorker.
myBGWorker.WorkerReportsProgress = true;
myBGWorker.WorkerSupportsCancellation = false;
myBGWorker.DoWork += myBGWorker_DoWork;
myBGWorker.ProgressChanged += myBGWorker_ProgressChanged;
}
public void ShowProgress()
{
myBGWorker.RunWorkerAsync();
}
private void myBGWorker_DoWork(object sender, DoWorkEventArgs e)
{
// fetches a static value from the service
string value = _client.Progress();
int p=0;
for (int i = 1; i <= 100; i++)
{
// Report progress.
p = Convert.ToInt32(_client.Progress());
_logger.Debug("Progress5:" + p.ToString());
myBGWorker.ReportProgress(p, i);
}
}
private void myBGWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.Dispatcher.BeginInvoke(new Action(delegate
{
progressBar1.Value = e.ProgressPercentage;
}), DispatcherPriority.ContextIdle);
}
はあなたにSouXinをありがとうございます。私の問題は、サービスからUIへの値を取得することです。 UIの進行状況データをバインドしません。私は、コールバック/デュプレックスバインディングを使用せずに進捗データをクライアントに送信する方法を理解したいと思います。 wsHttpBindingを使用して、クライアントプロキシから関数サービス呼び出しの中間値を取得するにはどうすればよいですか?現在はバックグラウンドワーカーを使用していますが、DEBUGモードでは正常に動作しますが、リリースモードでは値を返しません。これがどのように起こっているかについてはあまりよく分かりません。 – kani