.NET FrameworkでいわゆるJavaScriptのsetTimeout()みたいな事をやる方法

たまーにやりたくなるんだけど、その都度やり方を忘れちゃってるので備忘録。

private void SetTimeout(Action fn, int time)
{
    BackgroundWorker worker = new BackgroundWorker();

    worker.DoWork += delegate(object sender, DoWorkEventArgs e)
    {
        Thread.Sleep(time);
    };

    worker.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e)
    {
        fn();
    };

    worker.RunWorkerAsync();
}

System.ComponentModel.BackgroundWorkerとSystem.Threading.Thread.Sleep()を使うだけ。
ちなみにJavaScriptのsetInterval()はSystem.Threading.Timer使うだけ。