2012-02-06 77 views
1

我处于僵局。 只需提供一项服务,例如每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。

原因是什么?有任何想法吗?

+0

这可能仅适度有用,但您可能会考虑使用2003计算机出现配置问题的可能性。至少,我会在一个干净的2003安装中尝试这个。 – 2012-02-06 14:10:19

+1

是你正在运行的*精确*代码 - 或者你是否已经将它修剪后发布? – 2012-02-06 14:53:01

+0

@RobLevine是的,我已修剪。 – 2012-02-06 15:19:03

回答

0

有U前

锁(EventEDILog)

获取日志因为如果EventEDILog正在锁被另一个线程永不解锁 那么你的BackgroundWorker的将被封锁的EventEDILog得到解锁。

+0

我尝试了'锁',没有'锁'。全部都一样。 :( – 2012-02-06 14:19:52