var sw = System.Diagnostics.Stopwatch.StartNew();
while (sw.ElapsedMilliseconds < 3000) {
  // メインスレッドの処理とやら
  Console.WriteLine("wait");
  System.Threading.Thread.Sleep(500);
}
これでいいだろ