C# 一个c定时器能自己调用.stop函数吗?

C# 一个c定时器能自己调用.stop函数吗?,c#,.net,programming-languages,C#,.net,Programming Languages,每当我尝试这样做时,计时器都不会停止: private void timer1_Tick(object sender, EventArgs e) { if ((addedToFriendsCounter == 4) || (followJobFinished)) { //stop the timer } } 有什么建议吗?有,没问题。评论不能阻止计时器。使用 timer1.Stop(); 或 从Tick事件处理程序中停止计时器没有问

每当我尝试这样做时,计时器都不会停止:

private void timer1_Tick(object sender, EventArgs e)
    {

        if ((addedToFriendsCounter == 4) || (followJobFinished))
        {
    //stop the timer
    }
}

有什么建议吗?

有,没问题。评论不能阻止计时器。使用

 timer1.Stop();


从Tick事件处理程序中停止计时器没有问题。RindsCount和followJobFinished的加法是什么?您的错误可能与其中一个或//停止计时器的代码有关。

是的,从滴答事件停止计时器没有问题。事件在主线程中运行,因此在访问计时器控件时不会出现跨线程问题


您可以通过调用stop方法或将Enabled属性设置为false来停止计时器。

+1有关评论,请不要停止计时器:-我在阅读时将啤酒洒在屏幕上,搞笑。还要注意,如果间隔很小,那么最好在tick函数开始时停止计时器,然后在finally块结束时启动计时器。否则,如果数据库调用缓慢或类似情况,两个刻度可能重叠。在主题上还有一个问题..我可以在另一个正在运行的线程上调用thread.abort吗?如果它不起作用,我们可能会帮助您发布您现在拥有的完整的timer1\u刻度函数。永远不要调用thread.abort。这是纯粹的、纯粹的邪恶。这也意味着tiemr tick事件可以在另一个已启动的线程上调用thread.abort吗?@brux:可以,但使用abort停止线程可能会导致问题。线程将停止在它所做的任何中间,所以除非它正等待中止,否则不可能编写正确处理异常的代码。跨线程问题将取决于正在使用的定时器类。OP没有说。@Robert Jeppesen:只有winforms和webforms的计时器有一个滴答声事件,而webforms的计时器没有停止方法。
 ((Timer)sender).Stop();