3
將大類完全異步兼容還是應該使用其他方法是一個好主意?異步:大類中的哪些實踐?
示例理解:
AsyncValidateUserInput.cs
public async Task<TaskStateHelper> CheckSiteIsReachable()
public async Task<TaskStateHelper> VerifyCertificate()
public async Task<TaskStateHelper> TestAccount()
{
#DoStuff
await exchangeAccount.FetchAccountInformation
#DoStuff
await exchangeAccount.GetAccountBalance
#DoStuff
}
GetAccountBalance是基於所述的AccountManager類:
AccountManager.cs
public async Task<decimal> GetAccountBalance()
{
#DoStuff
await FooAPI.GetAccountBalanceAsync()
}
個
FooAPI.cs
public async Task<Dictionary<string, decimal>> GetAccountBalanceAsync()
{
var queryResult = await QueryPrivateAsync("Balance");
#DoStuff
}
private async Task<Stream> QueryPrivateAsync(string method, Dictionary<string, string> param = null)
{
#DoStuff
await postStream.WriteAsync(postData);
#DoStuff
await ReadFromStreamAsync(webResponse.GetResponseStream());
#DoStuff
}
另一種方式是簡單地創建任務。
result = await Task.Factory.StartNew(exchangeAccount.GetAccountBalance);
我是否使用Async規則兼容?
謝謝您的時間
如果'GetAccountBalance'訪問外部資源,用'Task.Run'手動創建任務確實是錯誤的方法,這將簡單地浪費資源(線程) – Fabio
爲什麼你懷疑異步方法的數量?你有沒有遇到一些問題? – Fabio
更有趣的是什麼導致你問這個問題。 – Evk