我想就此方法提供一些建議。這是一個很好的模式,還是會有其他更好的表現?C#Paralle.For異步等待方法的正確模式
public async Task<PortfolioLoans> GetSampleOfPortfolioLoanNumbers(int count = 1)
{
var sqlConn = new SqlConnection(this.DataMineConnectionString);
var pfLoans = new PortfolioLoans();
var ts = new ThreadSafeList<PortfolioLoan>();
try
{
await Task.Run(() => {
Parallel.For(0, count, async i =>
{
var loans = await sqlConn.QueryAsync("dbo.spGetSampleApplicationIDs", Parameters.Empty, Query.Returns<PortfolioLoan>());
ts.AddRange(loans);
});
pfLoans.Loans.AddRange(ts.Clone());
});
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
return pfLoans;
}
是'pfLoans.Loans'的一個列表?如果是這樣的話不是線程安全的 –
@AndrewMorton - 我正在使用[Insight Database](https://github.com/jonwagner/Insight.Database)micro orm – chdev77
@ DanielA.White - 感謝您指出這一點。我會解決這個問題。 – chdev77