Если вы не хотите, чтобы пользователь мог что-либо делать во время загрузки файла, вам не нужно помещать его в другой поток.
Если вы хотите, чтобы пользователь мог выполнять другие задачи во время загрузки файла, поместите его в другой поток.
Как правило, если у меня возникает ситуация, когда я абсолютно не хочу, чтобы пользователь что-либо делал во время продолжительного процесса, я отключаю элементы управления в форме, пока задача не будет завершена, и обычно используют индикатор состояния, чтобы показать, что прогресс происходит.
Мое личное руководство, разрешающее или запрещающее взаимодействие с пользователем, заключается в том, если результаты процесса могут быть изменены действием пользователя в середине потока.
Например, одна из наших программ разбирает кучу запросов в сильно нормализованной базе данных (нормализованной до точки, когда отчетность является отложенной) в «отчетные» таблицы, и я не хочу, чтобы пользователь изменял данные в одной из исходные таблицы во время выполнения запроса, потому что он даст глупые результаты.
Если нет никакого вреда в разрешении взаимодействия с пользователем во время процесса, поместите его в другой поток.
Редактировать
На самом деле, читая комментарии @UrbanEsc и @ archer, я с ними согласен. Тем не менее поместите его в другой поток и заморозьте элементы управления (и, если возможно, включите индикатор прогресса).