我處於僵局。 只需提供一項服務,例如每10秒執行一次。我首先使用了System.Timers.Timer。在我的電腦上一切正常。但是我在我的客戶的Windows Server 2003服務器上遇到了問題。 System.Timers.Timer timer1_Elapsed沒有射擊,我已經改變了System.Threading.Timer這個計時器,我看到了相同的圖片。它適用於我的電腦,不適用於客戶的服務器。 後,我放棄所有這些都定時器和使用了BackgroundWorked此任務 代碼:我無法在窗口服務中創建線程
public partial class XXXService : ServiceBase
{
public XXXService()
{
InitializeComponent();
if (!System.Diagnostics.EventLog.SourceExists("XXXSource1"))
System.Diagnostics.EventLog.CreateEventSource("XXXSource1", "XXXLog");
EventXXXLog.Source = "XXXSource1";
EventXXXLog.Log = "XXXLog";
}
private ManualResetEvent threadSleepEvent = new ManualResetEvent(false);
private BackgroundWorker fBg = new System.ComponentModel.BackgroundWorker();
protected override void OnStart(string[] args)
{
EventXXXLog.WriteEntry("XXX Service has started.");
//fTimer.Enabled = false;
//fTimer.Interval = 1000;
//fTimer.Elapsed += new System.Timers.ElapsedEventHandler(fTimer_Elapsed);
//fTimer.Start();
//fTimer = new System.Threading.Timer(new System.Threading.TimerCallback(fTimer_Elapsed), null, 1000, 5000);
fBg.DoWork += new System.ComponentModel.DoWorkEventHandler(fBg_DoWork);
EventXXXLog.WriteEntry("XXX Service has started. test 2");
fBg.RunWorkerAsync();
EventXXXLog.WriteEntry("XXX Service has started. test 3");
}
void fBg_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
//EventXXXLog.WriteEntry("test 4");
lock (EventXXXLog)
{
EventXXXLog.WriteEntry("test 4");
}
}
}
都是一樣的。在我的電腦上一切正常,但在Server 2003 comp上不起作用。我看到測試1,測試2和測試3日誌消息,並且看不到'測試4'。看起來BackgroundWorker不執行fBg_DoWork。
原因是什麼?有任何想法嗎?
這可能僅適度有用,但您可能會考慮使用2003計算機出現配置問題的可能性。至少,我會在一個乾淨的2003安裝中嘗試這個。 – 2012-02-06 14:10:19
是你正在運行的*精確*代碼 - 或者你是否已經將它修剪後發佈? – 2012-02-06 14:53:01
@RobLevine是的,我已修剪。 – 2012-02-06 15:19:03