私はWCFレストサービスを構築しており、それはクライアントです。私は、クライアントがサービスについてあまり知らないことを計画しています。メソッドを呼び出すための適切な URL と期待される結果です。
私のサービス契約は次のとおりです。
[WebInvoke(Method="POST", UriTemplate="/tasks")]
[OperationContract]
void SubmitTask(Transaction task);
[WebGet(UriTemplate = "/tasks/{taskId}")]
[OperationContract]
[XmlSerializerFormat]
Transaction GetTask(string taskId);
SubmitTask は次のように実現されます。
SubmitTask(Transaction task)
{
DoSomethingWithTask(task);
task.Status = "SomeStatus";
DoSomethingElseWithTaks(task);
task.Status = "SomeOtherStatus";
}
クライアントに期待すること:
ButtonClick()
{
SubmitTask(task);
while(true)
{
string status = Transaction GetTask(task.taskId).Status;
Textbox.Text+= status;
if(status==ok)
break;
Thread.Sleep(1000);
}
}
問題は、すべての SubmitTask 操作が完了している間、サービス側で GetTask が実行されないため、クライアント側で最後のタスク ステータスのみを取得することです。この状況で実行する非同期操作を実現するにはどうすればよいですか?
前もって感謝します!