If you need to make sure that there is a five second delay after each method finishes rather than just running the methods sequentially, with a method being called every 5 seconds, you can use the task based asynchronous pattern. In this example the functions are called in response to a button click. The functions will run on the UI thread but the 5 second delay will be an asynchronous delay and will not block the UI thread.
private async void BtnRun_Click(object sender, EventArgs e)
{
function1();
await Task.Delay(5000);
function2();
await Task.Delay(5000);
function3();
await Task.Delay(5000);
function4();
}
If the functions are all Actions
you can refactor the method by using a List<Action>