我正在構建WCF休息服務,它是客戶端。我計劃,客戶對服務知之甚少,恰到好處地調用URL來調用方法和預期結果。如何使WCF RESTful服務工作異步?
我的服務合同是:
[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);
}
}
的問題是 - 不執行上GetTask服務端,而所有的SubmitTask操作都完成了,所以我只在客戶端獲得最後的任務狀態。如何在這種情況下實現異步操作?
在此先感謝!
你在哪裏使用異步? – Cybermaxs
你是什麼意思?我做了一個方法調用,並且我希望它在主方法處理結束之前在服務上執行。這不意味着異步工作? –