Ожидание завершения фонового потока

Извините, если это дубликат, но я не совсем уверен, какие термины мне нужно использовать, чтобы найти существующие ответы на этот вопрос.

Я пытаюсь улучшить производительность запуска приложения, псевдокод выглядит примерно так.

LoadBigFileFromDisk();  //slow
SetupNetwork();         //even slower
UseBigFileFromDisk();

Я решил, что поскольку первый шаг связан с диском, а второй - с сетью (и медленнее), я могу запустить первый в фоновом потоке (сейчас играю с ThreadPool.QueueUserWorkItem, но не уверен, что это лучший способ) и немного улучшить производительность.

Это работает, но меня беспокоит то, что я полагаюсь на то, что второй шаг будет достаточно медленным для завершения первого.

Я знаю, что могу установить где-то _done boolean и while ! на этом, но есть ли более элегантное/идиоматическое решение?

(Еще не .Net 4.0, поэтому, хотя я заинтересован в Task-based, мне нужны запасные решения).

5
задан Benjol 24 October 2011 в 11:16
поделиться