こんにちは。

C#で、遅延実行をしようとしています。
ある程度は動いています。

下記のソースを定義しました。

public static void WaitExecute(int milliseconds, Action f)
{
    // 指定秒後に処理を実行
    DispatcherTimer timer = new DispatcherTimer
    {
        Interval = TimeSpan.FromMilliseconds(milliseconds)
    };
    timer.Start();
    timer.Tick += (s, args) =>
    {
        // タイマーの停止
        timer.Stop();
        f();
    };
}

private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // 指定秒後に処理を実行
    WaitExecute(100, () =>
    {
        comboBox1.Text = "デフォルト値";
    });
}

このようにして、少しだけ動作を遅らせて動かす仕組みを作ってみました。
comboBoxは単なる例です。
Comboboxで何を選択しても、すぐにデフォルト値に戻るような動きをします。
(実際には特定の項目だけデフォルト値に戻る、
というような実装をしています)

このときに、この、WaitExecuteに引数として、引き数なしのActionを渡すだけではなく
引き数が任意個数の、たとえば、Action<string>Action<string, string>
Action<int> などを渡したいのです。

WaitExecuteを修正してActionを引き渡したときに
ジェネリックとして記載するのだと思うのですが、
そのやり方がわかりません。

検索ワードの工夫も難しくテクニックなどがみつかりませんでした。

ご存知でしたら教えてください。

このようなテクニックがわかるWebサイトなどを
示していただくのも助かります。

よろしくお願いします。