C# 定时器没有启动?

C# timer not starting?

我不确定出了什么问题,我编写了一个计时器来延迟一段代码,但它就是没有启动。希望有人能给我一些见解,看看它是否与 await / async 有任何关系。

private async void btnOk_Click(object sender, EventArgs e)
{
    this.close() // closes form to prevent further input; is this why timer failed? 

    // Some codes
    Task<string> task = Task.Run(() => PDF.Merge(PDF.Copy(tblPDFs, Appendix, DestFolder), Appendix, DestFolder));
    string PDFresult = await task;

    timer = new Timer();
    timer.Interval = 1000;

    timer.Tick += new EventHandler((abc, def) =>
    {
        MessageBox.Show("HOORAY!"); //<-- not firing! 
        timer.Stop();
    });

    timer.Start();
}

按照@spender 的建议,我删除了计时器并使用了 Task.Delay(),它起作用了:

private async void btnOk_Click(object sender, EventArgs e)
{
    this.close() // closes form to prevent further input; is this why timer failed? 

    // Some codes
    Task<string> task = Task.Run(() => PDF.Merge(PDF.Copy(tblPDFs, Appendix, DestFolder), Appendix, DestFolder));
    string PDFresult = await task;

    await Task.Delay(1000);
    // Codes you want to do. 
}