سلام.
شما برای اجرای کدها میتونید از یک thread دیگه استفاده کنید. از کنترل backgroundworker هم میتونید استفاده کنید که از یک thread دیگه استفاده میکنه.
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
System.Threading.Thread.Sleep(200000);
}
البته با ارورهای متفاوتی ممکنه مواجه بشی، اما به نظرم راه حل استفاده از یک threed دیگست، تو اینترنت جستجو کنید میتونید روشهای متفاوتی از استفاده thread ها و مفهوم thread رو پیدا کنید.