2017-07-11 68 views
-1

是否可以將backgroundworker運行到您從工具箱中獲得的計時器?就像任務類可以在計時器上調用例如:如何在定時器上運行backgroundworker

private void elapsed_time(object sender, Eventargs e) 
{ 
    Task test = new Task(()=>method()); 
    test.Start(); 
} 

也許這是非常愚蠢的問題,但我只是想知道。我在網上做過調查,但沒有直接的答案。非常感謝。

+0

你是不是指'Task test'?構造函數似乎是錯的! – praty

+0

謝謝。但我想知道如果它只是我只dropSoftWorker.RunWorkerAsync();在計時器上? – 19GreenBlankets

+0

_「我想知道如果我只在一個計時器上放棄backgroundWorker.RunWorkerAsync();是否可以?」_ - 當你嘗試時會發生什麼? _你嘗試過嗎?如果沒有,爲什麼你花時間寫作堆棧溢出帖子,當你可以_trying它_?在定時器回調/事件處理程序中無法執行任何代碼是沒有根本原因的,但對於任何給定的代碼,可能存在_specific_原因,在特定情況下無法運行。如果你不分享所有相關的細節,並解釋爲什麼你需要別人來回答這個問題,那麼不可能給出一個好的答案。 –

回答

1

我幾乎不確定您的問題是否意味着在每個打勾上創建一個後臺工作人員。但是,如果這就是你想要的,我認爲這是可能的!我沒有試過的代碼,但只是猜測它可能工作:

private void elapsed_time(object sender, Eventargs e) 
{ 
    System.ComponentModel.BackgroundWorker worker = new System.ComponentModel.BackgroundWorker(); 

    worker.DoWork += NewBackgroundWork_Start; 
    worker.RunWorkerCompleted += NewWork_Completed; 
    worker.RunWorkerAsync(); 
} 

private void NewBackgroundWork_Start(object sender, System.ComponentModel.DoWorkEventArgs e) 
{ 
    Console.Writeline("I am the new job"); 
} 

private void NewWork_Completed(object sender, System.ComponentModel.DoWorkEventArgs e) 
{ 
    Console.Writeline("The job is complete"); 
} 
+0

謝謝我會試試這個! – 19GreenBlankets

1

你應該閱讀有關Timer類MSDN上的文章。 有一個例子,這不正是你想要什麼:

https://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.110).aspx#Examples

只需拖放從工具箱中計時器是不夠的。

計時器有事件Elapsed,您可以將其綁定到某個方法。這將在計時器關閉時執行。
最好是看它是如何在文檔中工作的:https://msdn.microsoft.com/en-us/library/system.timers.timer.elapsed(v=vs.110).aspx

相關問題