이제 Lambdas, Funcs, Delegates, Actions 등에서 조금 익숙해졌습니다. 그러나 데이터베이스 작업에 의존하는 과제를 병렬 처리하는 더 나은 방법을 찾으려고합니다. 다른 말로하면 나는 하나의 데이터베이스에서 데이터를 가져올 많은 양의 데이터를 가지고 있으며, 병렬로 처리하고 직렬로 처리하고 싶습니다.과제를 병렬 처리하는 더 나은 방법
지금까지 나는 Parallel.Foreach()
과 함께 콤보로 List<Func<object>>
을 사용하고 있습니다.하지만 더 세련된 방법이 있는지 궁금합니다. Parallel.Invoke를 시도했지만 Lambda 표현식에 Invoke()를 호출 할 수 없었습니다 (아마도 func 리터럴이 없을 수도 있습니다). Invoke()를 호출 한 다음 Action으로 처리하기 전에 Func에 먼저 할당되어야합니다.
이것은 내가 지금까지 가지고있는 것입니다.
List<Func<Object>> Assignments = new List<Func<object>>();
Assignments.Add(() => lookups.Acknowledgements = DBRepository.GetAll<Acknowledgement>());
Assignments.Add(() => lookups.AcknowledgementDetails = DBRepository.GetAll<AcknowledgementDetail>());
Assignments.Add(() => lookups.AcknowledgementRadioButtons = DBRepository.GetAll<AcknowledgementRadioButtonSection>());
Assignments.Add(() => lookups.AcknowledgementRadionButtonItems = DBRepository.GetAll<AcknowledgementRadioButtonSectionItem>());
Assignments.Add(() => lookups.AcknowledgementTextBoxes = DBRepository.GetAll<AcknowledgementTextBoxSection>());
Assignments.Add(() => lookups.MarketingPages = DBRepository.GetAll<MarketingPage>());
Assignments.Add(() => lookups.MarketingPageDetails = DBRepository.GetAll<MarketingPage_Detail>());
// and many many more...
Parallel.ForEach(Assignments, (assignement) =>
{
assignement.Invoke();
});
일반적으로 할당 작업을 병렬화하는 데 더 예쁘고 우아하거나 더 좋은 방법이 있습니까?
을, 당신의 Parallel.Invoke() 코드가 작동합니다. 나는 분명히 이전의 시도에 대한 구문을 제대로 이해하지 못했습니다. –