Windows服务仅在使用messagebox.show时才起作用如何避免它

时间:2012-01-11 07:16:24

标签: c# .net windows-services

这是我的代码

protected override void OnStart(string[] args)
{
    timAutoUpdate.Enabled = true;
    MessageBox.Show("started");
}

protected override void OnStop()
{
    timAutoUpdate.Enabled = false;
    System.Windows.Forms.MessageBox.Show("Service stopped");
}

private void timAutoUpdate_Tick(object sender, EventArgs e)
{
    MessageBox.Show("Ticked");
}

在启动事件后显示消息“Ticked”。如果我在Onstart事件中删除了messagebox,那么Tick事件不起作用。它没有显示任何消息。请指明它背后的原因。我只是在Tick事件中保留了简单的消息框我的代码。请告诉我实现它的方法。

 protected override void OnStart(string[] args)
{
    timAutoUpdate.Enabled = true;
}

protected override void OnStop()
{
    timAutoUpdate.Enabled = false;
}

private void timAutoUpdate_Tick(object sender, EventArgs e)
{
    MessageBox.Show("Ticked");
}

1 个答案:

答案 0 :(得分:0)

你正在使用什么计时器?是System.Windows.Forms.Timer?

如果是这种情况,则需要更改它,因为此计时器不适用于Windows服务(http://msdn.microsoft.com/en-us/magazine/cc164015.aspx

试试这段代码:

    protected override void OnStart(string[] args)
    {
        scheduleTimer = new System.Threading.Timer(new TimerCallback(AutoTick), null, 0, 3000);
        eventLogEmail.WriteEntry("Test");
    }
    private void AutoTick(object state)
    {
        MessageBox.Show("Ticked")
    }