Проблема в том, что Thread.Join () будет блокировать вызывающий поток, пока поток, на котором вы ожидаете, не завершится.
Вместо этого вы должны использовать асинхронную модель для этого вида деятельности. BackgroundWorker был бы идеальным здесь:
class MyForm
{
private BackgroundWorker _backgroundWorker;
public Myform()
{
_backgroundWorker = new BackgroundWorker();
_backgroundWorker.DoWork += CheckVersion;
_backgroundWorker.RunWorkerCompleted += CheckVersionCompleted;
// Show animation
// Start the background work
_backgroundWorker.DoWork();
}
private void CheckVersion()
{
// do background work here
}
private CheckVersionCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// hide animation
// do stuff that should happen when the background work is done
}
}
Это всего лишь примерный пример реализации, но похожий на тот, что я делал в прошлом.