2013-05-17 49 views
4

我正在構建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操作都完成了,所以我只在客戶端獲得最後的任務狀態。如何在這種情況下實現異步操作?

在此先感謝!

+0

你在哪裏使用異步? – Cybermaxs

+0

你是什麼意思?我做了一個方法調用,並且我希望它在主方法處理結束之前在服務上執行。這不意味着異步工作? –

回答