0

我有以下代码:

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();),但在我关闭表单之前它不会运行其他代码行。

为什么会这样?我怎样才能解决这个问题?

任何帮助,将不胜感激。先感谢您。

编辑:

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

4

2 回答 2

0

文档说:

您可以使用此方法在应用程序中显示模式对话框。调用此方法时,它后面的代码要等到对话框关闭后才会执行。

如果您只是希望代码继续运行而不是阻塞直到弹出窗口关闭,请考虑使用Form.Show而不是Form.ShowDialog

于 2013-03-15T03:05:26.787 回答
0

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

于 2013-03-15T03:27:34.327 回答