【发布时间】:2021-05-26 00:54:05
【问题描述】:
我目前正在从事一个学校项目,该项目需要每 2 秒生成、处理和存储一次数据。为此,我正在使用 while(true) 循环。我遇到的问题是允许用户打破该循环并请求生成的数据。生成/存储必须是一个在后台发生的连续过程,所以我不能在每次迭代开始时要求用户输入。我希望有人可以帮助我。这是一个简单的例子:
int i = 0;
List<int> list = new List<int>();
//Console.WriteLine("Generating will continue until any key is pressed... ");
while (true)
{
i++;
li.Add(i);
Thread.Sleep(2000);
}
foreach (int i in list)
{
Console.Writeline(i);
}
【问题讨论】:
-
你在这里的背景是什么?在基于 UI 的应用程序中,您可以侦听键盘事件。否则只需考虑 2 个不同的应用程序,让用户 ctrl+c 打破自动进程并单独运行手动进程
-
如果您告诉我们这是一个 Web 应用程序、控制台应用程序、WinForm 还是 UWP 应用程序以及其他可能性,将会有所帮助。
-
@Dour:好吧,上面发布的代码确实包含对
Console.WriteLine()的调用。这在其他 API 本身中并不违法,但强烈建议它只是一个控制台应用程序。 -
@PeterDuniho 你打算在哪里划清界限;)是的,这很明显,但为了帮助社区,我们需要适当地标记它,只有 OP 应该提供该级别的信息,我们应该拒绝社区编辑具有这种性质的假设会极大地改变潜在的解决方案,祝您好运,等待非控制台应用程序中的控制台输入。
-
@Chris: "为了帮助社区,我们需要适当地标记它" -- 是的。 “只有 OP 应该提供该级别的信息”——是的。 “我们应该拒绝这种性质的社区编辑”——是的。我在之前的评论中对 Dour 的看法是,可以要求 OP 确认一个合理的假设,而不是用许多其他几乎肯定不适用的技术来分散他们的注意力。
标签: c# loops while-loop