wp7 アプリを開発しています。その中で、WCF サービスを使用して、アプリケーションの開始時にデータを取得します。データを取得したら、ISO ストアに保存する必要があります。DoWork
のイベントで サービスコールが発生しましたBackGroundWorker
。私の知る限り、Windows Phone 7 の WCF では非同期呼び出しのみが可能ですCompleted
。サービス呼び出しのイベントに関するデータを取得しています。しかし、Background worker completed
イベントはサービスのイベントの前に発生してCompleted
います。サービス コールからデータを取得した後、ユーザーのオンライン ステータスを更新する必要があります。
ステータスを更新するためのベスト プラクティスは何ですか。Completed
サービスコールの際に行ってもよろしいでしょうか?Background worker completed
または、イベントでステータスを更新する方法はありますか。
これが私のコードです
private void StartLoadingData(bool status)
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
worker.RunWorkerAsync(status);
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
if (!string.IsNullOrEmpty(this.CurrentUser))
{
ServiceReferenceClient cl = new ServiceReferenceClient() ;
cl.ChangeUserStatusCompleted += new EventHandler<ChangeUserStatusCompletedEventArgs>(cl_ChangeUserStatusCompleted);
cl.ChangeUserStatusAsync(this.CurrentUser, true);
e.Result = true;
}
}
private void cl_ChangeUserStatusCompleted(object sender, ChangeUserStatusCompletedEventArgs e)
{
// here i will get my result to process next step
}
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// result obtained from service need here
}