【问题标题】:Visual Studio Console App (.exe) hangsVisual Studio 控制台应用程序 (.exe) 挂起
【发布时间】:2018-06-23 06:01:49
【问题描述】:

我有一个用 C# 编写的无限 do while 循环,可以无限期地打印时间。 它让系统线程等待 10 秒。

一旦我运行它,它一开始没有问题。 但是,过了一段时间,比如 30 分钟或 1 小时,程序会在中间挂起。该程序不再打印任何内容。 我必须按回车,程序才能继续打印。

有人遇到过这个问题吗?如何让我的程序无限期地运行而不挂起?谢谢!

代码:

while(true){
    Console.WriteLine(DateTime.Now());
    System.Threading.Sleep(10);
}

【问题讨论】:

  • 我认为这可能是内存不足的问题,请检查您的可用内存。
  • 我认为这可能是内存不足的问题,请检查您可用的 Ram。因为它在您运行程序时用于临时存储,它正在临时加载到 ram 中,因此当此行连续执行时需要更多的内存也在睡眠方法中使用秒数。
  • 根据控制台窗口的属性,某些类型的点击会使其认为您要选择文本,因此输出会暂停。您能否确认它是否只是自行暂停,没有任何用户交互?
  • 看起来是内存问题。建议你检查TaskManager。
  • 按 Enter 键不会解决内存问题或结束垃圾回收。它确实完成了 Console.Read/Line() 调用或 Edit > Mark 会话。 Console.Read 阻止 Console.Write 可能发生在 4.5 RTM 中,但已修复。按 Alt+Space > 属性 > 选项,取消选中“快速编辑模式”复选框以降低意外鼠标单击启动标记会话的几率。并且想知道这个程序如何对任何人有用。

标签: c# visual-studio console-application


【解决方案1】:

Sleep 参数的单位是毫秒而不是秒。尝试将其更改为10 * 1000

30 分钟或 1 小时后的暂停可能是由于垃圾收集。查看https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/ 了解可能的解决方法。

【讨论】:

  • C# 中的垃圾回收不是自动的吗?而且我的服务器有很大的内存,16GB,所以内存应该不是问题,对吧?
猜你喜欢
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
相关资源
最近更新 更多