【问题标题】:C# Discord Bot cmd window closingC# Discord Bot cmd 窗口关闭
【发布时间】:2019-03-22 13:41:57
【问题描述】:

有一个非常简单的问题,但似乎无法在任何地方找到答案。我在 C# 中为 Discord 编写了一个机器人,在调试或从调试文件夹运行时,一切都按预期工作。我现在已经完成了所有功能,但是当我进行发布构建并运行 .exe 时,命令提示符窗口会闪烁并再次关闭。我知道这是代码完成执行时的常见行为,在这种情况下它会发生这种情况。然而,这是等待命令的机器人,我需要应用程序继续运行并侦听命令。

我用作程序主程序的代码是:

static void Main(string[] args) => new Program().StartAsync().GetAwaiter().GetResult();

我相信问题一定出在这里。

提前致谢

【问题讨论】:

  • 尝试将其包装在 try .. catch (Exception ex) {Console.WriteLine(ex);} 中并在最后执行 Console.ReadLine() 以便您的程序等待 Enter 键。
  • 您需要引入一个循环,该循环将以某种退出条件运行。就像quit 命令一样。循环可能会检查 quitRequested 布尔值是否保持为假,并将 quit 命令设置为 quitRequested 为真。
  • @xmedeko 这只会让控制台窗口保持打开状态。它不会继续运行应用程序并继续侦听命令。
  • 我相信这会阻止机器人完全运行。它正在通过 Discord Web 套接字侦听命令,没有任何内容输入到控制台
  • @LewsTherin 我会试一试

标签: c# cmd discord


【解决方案1】:

您应该将 Main() 方法中的代码封装在一个循环中,该循环等待来自 Discord 的某种形式的 quit 命令。比如:

static void Main(string[] args) 
{  
    bool quitRequested = false;

    while (!quitRequested)
    {
        // In your program you need it to receive a "quit" command from discord and
        // return a bool that is set to "true" when the "quit" command is received.
        quitRequested = new Program().StartAsync().GetAwaiter().GetResult();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-04
    • 2018-03-04
    • 2014-06-19
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2011-02-05
    相关资源
    最近更新 更多