【问题标题】:Simple program logic to Call method continuously连续调用方法的简单程序逻辑
【发布时间】:2011-03-02 02:20:57
【问题描述】:

我的情况是,我的程序需要进行处理,然后等待一段时间,比如说 5 秒,然后再次进行相同的处理。

我不知道如何实现逻辑。

我开发了一个逻辑,代码如下:

private void ProcessEmail()
    {
        PprocessEmail:;

        //Do whatever you want

        System.Threading.Thread.Sleep(5000);
        goto ProcessEmail;
    }

这段代码的作用: 我只需要调用这个方法一次,它会做处理然后等待5秒然后再处理。

到目前为止,上面的代码运行良好,但我听说在编程中使用“goto”语句并不好。

我想知道,这段代码会有什么副作用,或者有没有其他有效的方法来做同样的事情。

【问题讨论】:

  • 您知道“while”和“for”等控制流结构的存在吗?
  • 嗨,谢谢大家的回复,我知道循环。但是除了循环之外还有其他有效的方法吗?就像我所做的那样。你明白我想要什么样的功能。
  • 有递归,但我想在这种情况下你不希望这样。循环有什么问题?
  • 是的,你是对的,我将实现 while,我考虑过递归,但递归会比使用 while 消耗更多的内存,因为我必须在永远持续运行的窗口服务中实现这一点。我对递归的看法不对,zerm 怎么说?
  • 每次调用函数都会占用调用栈上的一些空间,所以如果你进行无限递归,迟早你会用完栈空间并最终得到一个栈溢出:)

标签: logic goto redo


【解决方案1】:

查看循环。 This Wiki 文章可能是一个很好的理论起点。

如果是 C#,您会使用 while(true),它将永远循环。

【讨论】:

  • 嗨,谢谢大家的回复,我知道循环。但是除了循环之外还有其他有效的方法吗?就像我所做的那样。你明白我想要什么样的功能。
  • @nccsbim071:我有点困惑,你想要的功能是循环。 goto 只是以一种更丑陋的方式来做。我不知道,但如果在内部循环和 goto 可能以完全相同的方式表示,我不会感到惊讶,而且我无法想象会有比通过某种循环更有效的循环方式...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
相关资源
最近更新 更多