[英]Logging in proper order in Task Parallel Library scenario
我用C#編寫的Windows服務檢索了數千個員工的通訊詳細信息,並相應地向他們發送電子郵件。
我已經為每位員工使用Parallel.Foreach()
塊編寫了電子郵件發送部分。 我需要將我從每位員工檢索的代碼和值的執行記錄在(.txt)或(.log)文件中。
當我使用Parallel.Foreach()
,我將無法控制值的處理順序。
如何確保以正確的順序記錄了我在日志文件中捕獲的每一行執行記錄,以便輕松讀取日志文件以備后用。
請提出建議。
解決此問題的一種方法是使用PLINQ而不是Parallel.ForEach()
。 如果使用AsOrdered()
,則可以確保PLINQ查詢生成的數據的順序正確。
盡管我不確定像這樣更改代碼以用於日志記錄是否有意義。
代碼看起來像這樣(假設SendEmail()
返回日志):
var logs = users.AsParallel().AsOrdered()
.Select(u => SendEmail(u));
foreach (var log in logs)
{
AppendLog(log);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.