2015-03-16 2 views
0

Я не уверен, что пошло не так, я закодировал таймер, чтобы задержать кусок кода, но он просто не запускается. Надеюсь, кто-то может предложить мне некоторое представление о том, имеет ли он какое-либо отношение к ожиданию/асинхронному использованию.C# таймер не начинается?

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(); 
} 
+2

Ну, как далеко вы получите в отладку? Правильно ли выполняется слияние PDF? Вы можете показать короткую, но полную программу, демонстрирующую проблему? –

+1

Выполняет ли 'PDF.Merge'? Вы отлаживали, чтобы узнать, что происходит? –

+0

Включен ли таймер? timer.Enabled = true; – Chirag

ответ

0

Как было предложено @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. 
} 
Смежные вопросы