日期:2014-05-17  浏览次数:20882 次

【附代码】Form的Show()方法,为何运行时导致出现后即消失,而ShowDialog()则不会?
帮别人问的问题,我也不知道为何问这么怪的问题。她是把VS默认新建窗口工程的代码给改了using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
  static class Program
  {
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  //Application.Run(new Form1());
  Form a = new Form();
  a.Show(); 用这句,运行时窗口一闪就完了
//a.ShowDialog(); 用这句,就不会消失 }
  }
}

个人猜测,会不会Show()不阻塞线程?? 我查了MSDN没找到相关说明。如果有可能,请附上MSDN的解释,谢谢

------解决方案--------------------
show()不阻塞线程,那么,Main函数运行show()后,即结束整个程序,而showDialog()和Application.Run()均会阻止当前Main函数继续执行。