为什么代码在某一行停止执行?

时间:2013-03-15 03:00:15

标签: c++ windows winforms c++-cli

我有以下代码:

int main(array<System::String ^> ^args)
{
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 

    // Create the main window and run it
    Form1 ^ form = gcnew Form1;
    form->ShowDialog();

    //Starts the .jar file
    ServerProcess *aServer = new ServerProcess();
    aServer->NewServer();

    return 0;
}    

问题是程序会打开窗口(Form1 ^ form = gcnew Form1; form->ShowDialog();),但在关闭表单之前它不会运行其他代码行。

为什么会这样?我该如何解决这个问题?

任何帮助将不胜感激。提前谢谢。

修改

感谢“干杯和hth.-Alf”,我现在知道由于ShowDialog()之后的任何代码,在我关闭表格之前不会执行。 Application::Run(gcnew Form1())导致相同的行为。

2 个答案:

答案 0 :(得分:0)

documentation说:

  

您可以使用此方法在您的中显示模式对话框   应用。调用此方法时,后面的代码不是   执行直到对话框关闭后。

如果您只想让代码继续而不是阻止,直到弹出窗口关闭,请考虑使用Form.Show代替Form.ShowDialog

答案 1 :(得分:0)

“当调用此方法时,直到对话框关闭后才会执行其后的代码。”如果您不希望它阻止以下代码,则需要在另一个线程中调用ShowDialog。