How to run a method after a specific time interval?

You should create a Coroutine

public IEnumerator waitAndRun()
{
    // WAIT FOR 3 SEC
    yield return new WaitForSeconds(3);
    // RUN YOUR CODE HERE ...
}

And call it with:

StartCoroutine(waitAndRun());

There are several methods of creating thread but of course, it depends on what you are doing. You can create a thread on the fly like this:

Thread aNewThread = new Thread(
    () => OnGoingFunction()
);
aNewThread.Start();

This thread will be running in the background. The function you want to do should have a sleep method to sleep when its done processing. So something like this:

private void OnGoingFunction()
{
   //Code....
   Thread.Sleep(100); //100 ms, this is in the thead so it will not stop your winForm
   //More code....
}

I hope that helps.

Another option is to create the thread whenever you need to process it and not worry about the sleep option. Just create a new thread every time to load the process


Can you use a task?

Task.Factory.StartNew(() =>
{
    System.Threading.Thread.Sleep(Interval);
    TheMethod();
});


This is where you can use the async await functionality of .Net 4.5

You can use Task.Delay an give the delay in miliseconds. This is a very clean way. ex:

private async void button1_Click(object sender, EventArgs e)
{
    await Task.Delay(5000);

    TheMethod();
}