0

如果我以具有正在运行的 System.Windows.Forms.Timer 的表单从我的 Winforms 应用程序调用 Application.Exit,那么计时器也会自动停止吗?

 public void StartProcessing()
    {

        int i = 0;

        while (true)
        {
            if (BatchNumbersQueue.Count > 0)
            {
                i = BatchNumbersQueue[0];
            }
            else
            {
                //stop the time that queues batches  and exit
                timer1.Stop();
                Application.Exit();
            }
            ProcessQueue();
            QueueOfBatches.RemoveBatchToQueue(i);
            i = 0;
        }
    }
    //timer tick event
    private void timer1_Tick(object sender, EventArgs e)
    {

        UpdateProcessingQueue();
    }
4

1 回答 1

2

我在这里直接引用MSDN

Exit 方法停止所有线程上所有正在运行的消息循环并关闭应用程序的所有窗口。此方法不一定强制应用程序退出。Exit 方法通常在消息循环中调用,并强制 Run 返回。

要仅退出当前线程的消息循环,请调用 ExitThread。

Exit 引发以下事件并执行相关的条件操作:

为 OpenForms 属性表示的每个表单引发 FormClosing 事件。可以通过将 FormClosingEventArgs 参数的 Cancel 属性设置为 true 来取消此事件。如果多个处理程序之一取消该事件,则 Exit 无需进一步操作即可返回。

否则,为每个打开的表单引发 FormClosed 事件,然后关闭所有正在运行的消息循环和表单。

换句话说,调用Exit()肯定会停止并处理您的Timer对象。

于 2013-05-30T21:12:55.970 回答