2014-01-10 38 views
1

我想用C#定時器的DLL應用C#DispatcherTimer在DLL的申請無法觸發

DispatcherTimer dispatcherTimer = new DispatcherTimer(); 
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 
TimeSpan interval = TimeSpan.FromMinutes(5); 
dispatcherTimer.Interval = interval; 
dispatcherTimer.Start(); 

但問題是永遠不會觸發。即使時間爲5分鐘,也不會觸發方法dispatcherTimer_Tick。沒有任何錯誤。

任何想法爲什麼?我正在使用.net 4.0

+1

你是什麼意思的「DLL應用程序」?一個DLL不能自行運行,它只能被可執行文件使用。它是什麼類型的可執行文件?它是一個用戶界面的應用程序嗎? –

+0

您正在使用WPF? – Butzke

+0

此代碼僅在WPF或商店應用的*主線程上運行時纔有效。 –

回答

1

使用System.Timers.Timer代替,

System.Timers.Timer myTimer = new System.Timers.Timer(5 * 60 * 1000);    
    myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);    
    myTimer.Enabled = true; 
    myTimer.Start(); 

這適用於所有應用類型,應用程序是否是網絡,主機,WPF等你不必擔心它被使用的環境或應用程序。

1

對於DispatcherTimer的工作,您的應用程序必須運行消息泵。如果是控制檯應用程序或Web應用程序,則不存在消息泵,因此DispatcherTimer無法工作。

DispatcherTimer設計用於WPF應用程序。如果您在沒有UI的應用程序中需要定時器,請使用System.Threading.TimerSystem.Timers.Timer