Извините, если это дубликат, но я не совсем уверен, какие термины мне нужно использовать, чтобы найти существующие ответы на этот вопрос.
Я пытаюсь улучшить производительность запуска приложения, псевдокод выглядит примерно так.
LoadBigFileFromDisk(); //slow
SetupNetwork(); //even slower
UseBigFileFromDisk();
Я подумал, что, поскольку первый шаг связан с диском, а другой - с сетью (и медленнее), я мог бы запустить первый в фоновом потоке (в настоящее время играет с ThreadPool.QueueUserWorkItem
, но не уверен, что это лучший кстати) и немного улучшить производительность.
Это работает, но меня беспокоит то, что я полагаюсь на то, что второй шаг достаточно медленный, чтобы завершить первый.
Я знаю, что мог бы установить где-нибудь логическое значение _done
и while !
, но есть ли более элегантное / идиоматическое решение?
(пока не .Net 4.0, поэтому, хотя я заинтересован в задачах, мне нужны запасные решения).