Tela de carregamento do trabalhador em segundo plano no WinForms

Eu tenho um formulário onde é possível entrar e pode demorar um pouco até que os dados sejam carregados no formulário. Então, eu queria criar um formulário separado (loadScreen.cs) com uma barra de progresso quando o formulário estiver carregando. Eu tentei isso no formulário loadScreen.cs:

 private void Form1_Load(object sender, EventArgs e)
 {
   worker = new BackgroundWorker();
   worker.WorkerReportsProgress = true;
   worker.WorkerSupportsCancellation = true;

   worker.DoWork += new DoWorkEventHandler(worker_DoWork);
   worker.ProgressChanged +=
          new ProgressChangedEventHandler(worker_ProgressChanged);
   worker.RunWorkerCompleted +=
         new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
 }



 void worker_DoWork(object sender, DoWorkEventArgs e)
 {
   int percentFinished = (int)e.Argument;
   while (!worker.CancellationPending && percentFinished < 100)
 {
   percentFinished++;
   worker.ReportProgress(percentFinished);
   System.Threading.Thread.Sleep(50);
 }
 e.Result = percentFinished;
 }


 void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
 {
   progressBar1.Value = e.ProgressPercentage;
 }


 void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
 {
  this.Close();
  }

Eu li que o método worker_DoWork deve ter o código que leva mais tempo para carregar. Não sei como lidar com isso, pois meu botão está no Form1. Quando é clicado, eu vou para outra aula com

  private void signIn_Click(object sender, EventArgs e)
    {
        var logIn = new LogIn(this);
        logIn.checkUserInput(this);
    }

e lá eu executo as operações que carregam certas coisas. Como conectar tudo? Eu preciso de ajuda!

questionAnswers(1)

yourAnswerToTheQuestion