English 中文(简体)
为什么在我的产出显示后立即关闭了ole窗?
原标题:Why is the console window closing immediately once displayed my output?

I m studying C# by following the guidesem>MSDN.

现在,我刚刚尝试了Example 1(hereMSDN的链接),我也遇到了一个问题:为什么在我产出显示后立即关闭了ole窗?

using System;

public class Hello1
{
    public static int Main()
    {
        Console.WriteLine("Hello, World!");
        return 0;
    }
}
最佳回答

the issue here is that their Hello World Program is showing up then it would immediately close.
why is that?

www.un.org/Depts/DGACM/index_spanish.htm 因为完成。 如果假释申请已经完成执行,并且从<代码>main方法中回归,相关的青少年窗口自动关闭。 预计会采取这种行动。

如果你想让计算机保持开放,以便进行拆解,那么,你需要指示计算机在关闭窗户之前等待关键媒体。

编码>Console.ReadLine meth就是这样做的一种方式。 将这条线添加到您的法典的末尾(在<代码>return说明前作调整),将造成申请等待你在离开之前发布钥匙。

或者,如果没有在演播室视觉环境中的“<Ctrl<+F5所附的夸张,你就可以开始申请,但这显然不利于阻止你使用伪造的特征,你在撰写申请时可能希望你能够使用这些特征。

最好的折中办法很可能是将Console.ReadLine方法称作只有在通过在加工前指令中包装该申请而分解时。 类似:

#if DEBUG
    Console.WriteLine("Press enter to close...");
    Console.ReadLine();
#endif

如果出现无选择的例外情况,你可能希望窗户保持开放。 为此,请将<代码>Console.ReadLine();列入finally。 页: 1

#if DEBUG
    try
    {
        //...
    }
    finally
    {
        Console.WriteLine("Press enter to close...");
        Console.ReadLine();
    }
#endif
问题回答

不使用

Console.Readline()
Console.Read()
Console.ReadKey()

您可使用Ctrl+F5(如果你在视觉演播室读)。 然后,视像演播室将保持ole窗的开放,直到你发布钥匙。

注:你不能在这种做法中贬低你的代码。

I assume the reason you don t want it to close in Debug mode, is because you want to look at the values of variables etc. So it s probably best to just insert a break-point on the closing "}" of the main function. If you don t need to debug, then Ctrl-F5 is the best option.

This behaves the same for CtrlF5 or F5. Place immediately before end of Main method.

using System.Diagnostics;

private static void Main(string[] args) {

  DoWork();
  
  if (Debugger.IsAttached) {
    Console.WriteLine("Press any key to continue . . .");
    Console.ReadKey();
  }
}

网上视频演播室,2019年。 各个核心项目,青少年在违约后自动关闭。 你们可以通过菜单工具——选择————吗.——普通——在脱胎时自动关闭ole子。 如果你自动关闭了你的ole窗,如果不确定上述环境,就会进行检查。

这一点同样适用于......。 NET 框架新风格的青少年项目:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net472</TargetFramework>
  </PropertyGroup>

</Project>

旧风格。 该网络框架项目仍然无条件地关闭奥索尔(视力演播室16.0.1)。

参考:

如果你想继续公开你的申请,你必须做一些事情,以便保持工作活力。 下面的例子最简单,将在您的方案结束时:

while (true) ;

然而,它造成邮联超负荷工作,因为它因此被迫无限期地燃烧。

此时,您可选择使用<条码>System. .Forms.Application类别(但要求您添加<条码>System.Windows.Forms参考资料):

Application.Run();

This doesn t leak CPU and works successfully.

In order to avoid to add System.Windows.Forms reference, you can use a simple trick, the so-called spin waiting, importing System.Threading:

SpinWait.SpinUntil(() => false);

这也完美无缺,基本上由while的路段构成,其背后的条件由上述“lambda”方法归还。 为什么这种超载荷是这样? 查阅来源代码here;任何方面,它基本上等到万国邮联的某些周期再接手。

您还可以创建信息传承器,在发送到下台之前,将系统和程序的未决信息推向下台:

[DebuggerHidden, DebuggerStepperBoundary, DebuggerNonUserCode, DllImport("user32.dll", EntryPoint = "PeekMessage")]
public static extern int PeekMessage(out NativeMessage lpMsg, IntPtr hWnd, int wMsgFilterMin, int wMsgFilterMax, int wRemoveMsg);

[DebuggerHidden, DebuggerStepperBoundary, DebuggerNonUserCode, DllImport("user32.dll", EntryPoint = "GetMessage")]
public static extern int GetMessage(out NativeMessage lpMsg, IntPtr hWnd, int wMsgFilterMin, int wMsgFilterMax);

[DebuggerHidden, DebuggerStepperBoundary, DebuggerNonUserCode, DllImport("user32.dll", EntryPoint = "TranslateMessage")]
public static extern int TranslateMessage(ref NativeMessage lpMsg);

[DebuggerHidden, DebuggerStepperBoundary, DebuggerNonUserCode, DllImport("user32.dll", EntryPoint = "DispatchMessage")]
public static extern int DispatchMessage(ref NativeMessage lpMsg);

[DebuggerHidden, DebuggerStepperBoundary, DebuggerNonUserCode]
public static bool ProcessMessageOnce()
{
    NativeMessage message = new NativeMessage();

    if (!IsMessagePending(out message))
        return true;

    if (GetMessage(out message, IntPtr.Zero, 0, 0) == -1)
        return true;

    Message frameworkMessage = new Message()
    {
        HWnd = message.handle,
        LParam = message.lParam,
        WParam = message.wParam,
        Msg = (int)message.msg
    };

    if (Application.FilterMessage(ref frameworkMessage))
        return true;

    TranslateMessage(ref message);
    DispatchMessage(ref message);

    return false;
}

那么,你可以安全地 lo,做这样的事情:

while (true)
    ProcessMessageOnce();

该方案立即关闭,因为没有任何东西阻止它关闭。 在<代码>return 0;或增加Console.Read(); 之前插入一个空白点; 以防止方案关闭。

或者,你可以使用以下法典推迟结案:

System.Threading.Thread.Sleep(1000);

注<代码>Sleep 正在使用milliseconds。

另一种方式是使用<代码>。 页: 1

The code is finished, to continue you need to add this:

Console.ReadLine();

Console.Read();

使用Console.Read();防止该方案关闭,但确保您在返回声明之前加入Console.Read();,否则将是一项不可撤销的法典。

    Console.Read(); 
    return 0; 

http://msdn.microsoft.com/en-us/library/system.console.read.aspx”rel=“nofollow” Console。 阅读

Add The Read method to show the output.

Console.WriteLine("Hello, World!");
Console.Read();
return 0;

此处是指在不涉及<条码>的情况下:

var endlessTask = new TaskCompletionSource<bool>().Task;
endlessTask.Wait();

Tools -> Options -> Debugging -> General -> autoally near the console (5th final programme)

Check the box and close.

这适用于所有项目。

该方案一旦完成,即告结束。

在此情况下,请<代码>return 0;。 预计这一职能将发挥。

如果你想看到产出,那么要么把产出手工操作,要么在方案结束时设定等待,以便保持几秒开放(利用翻新的图书馆)。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...