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