據我一直在爲了出一本sync
方法async
弄清楚:使用,而不是同步異步方法一個
private async void RefreshScreen()
{
await System.Threading.Tasks.Task.Run(() =>
{
this.refreshContent();
this.refreshTokens();
}
);
}
是不是有反正開始使用它更優雅的方式?
編輯
正如你可以找出RefreshContent()
和RefreshTokens()
從事幾個調用web服務。
此WebService客戶端實現提供sync
和async
的方式來調用一個方法:
public async System.Threading.Tasks.Task<string> GetUrlAsync()
{
ApiResponse<string> localVarResponse = await GetUrlAsyncWithHttpInfo();
return localVarResponse.Data;
}
public string GetUrl()
{
ApiResponse<string> localVarResponse = GetUrlWithHttpInfo();
return localVarResponse.Data;
}
目前,我們正在使用"sync"
方法,當然,我們要使用async
調用移動。
例子:
public Enumerable<Element> GatherElements()
{
return yield new Element() {
Field1 = RESTClient.GetMethod1(),
Field2 = RESTClient.GetMethod2(),
Field3 = RESTClient.GetMethod3(),
Field4 = RESTClient.GetMethod4(),
Field5 = RESTClient.GetMethod5(),
Field6 = RESTClient.GetMethod6(),
Field7 = RESTClient.GetMethod7()
};
}
我不想等到所有其餘的呼叫結束,我想回到所有元素,無論每個Field
是否fullfilled。
我不知道我是否解釋得很好。
如果不是「事件處理程序」,則使用'Task'而不是'void'。 –
爲什麼使用'Task'而不是'void'更合適?你能提供任何樣品嗎? – Jordi
示例:在'Task.Run'內放置'拋出新的Exception()',然後在某處執行'RefreshScreen' - 並且您注意到沒有拋出異常 – Fabio