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