Я пытаюсь провести рефакторинг своего кода ниже, чтобы повысить производительность UpdateSites (). GetNewSite () занимает около 500 мс, и будет несколько сайтов, которые UpdateSites () обрабатывает. Моя идея - запускать выборки параллельно. Когда я тестирую свое решение, Visual Studio выдает ошибку:
Visual Studio Just-In-Time Debugger
An unhandled Microsoft .NET Framework exception occurred in w3wp.exe [3656]. Just-In-Time debugging this exception failed with the following error: No installed debugger has Just-In-Time debugging enabled. In Visual Studio, Just-In-Time debugging can be enabled from Tools/Options/Debugging/Just-In-Time.
Запуск моей программы с моим исходным кодом не вызывает ошибку. Я плохо справился с рефакторингом?
// original
await UpdateSites(currentUserSites);
private async Task<List<Site>> UpdateSites(List<Site> sites)
{
foreach (var site in sites)
{
var newSite = await GetNewSite(site.SiteId);
site.address = newSite.address;
site.phone = newSite.phone;
}
return sites;
}
// refactored
UpdateSites(currentUserSites);
private void UpdateSites(List<Site> sites)
{
Parallel.ForEach(sites, async site =>
{
var newSite = await GetNewSite(site.SiteId);
site.address = newSite.address;
site.phone = newSite.phone;
});
}