Я строю службу отдыха WCF и это клиент. Я планирую, что клиент мало знает об услуге, только правильные URL-адреса для вызова методов и ожидаемых результатов.Как заставить службу WCF RESTful работать async?
Мой контракт обслуживание:
[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 завершены, поэтому я получаю только последний статус задачи на стороне клиента. Как реализовать работу asynchronos в этой ситуации?
Заранее благодарен!
где вы используете асинхронный? – Cybermaxs
Что значит? Я делаю вызов метода, и я хочу, чтобы он выполнял службу до завершения основной обработки метода. Разве это не означает асинхронную работу? –