namespace WindowsApplication
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            //MessageBox.Show(Thread.CurrentThread.Name);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());            //MessageBox.Show(Thread.CurrentThread.Name);
            MessageBox.Show("");        }
    }
}一直认为,Form()是建立在非主线程的另外一个新线程上运行的,也就是说主线程应该和Form()并行的,但是运行结果是要关掉Form()才能继续向下执行。 这是什么原因呢?    还有不管哪用MessageBox.Show(Thread.CurrentThread.Name);  ,始终显示没有线程最后一个问题,  我做一个同步socket,以前把new Socket()放在Form()里的,accept()的时候会导致窗口处于假死状态,怎么解决的呢???我的想法是用另一个线程来监听,高手们提点建议吧。

解决方案 »

  1.   

    1. Application.Run 是开启消息循环,并说白了就是个死循环。窗口只是一个窗口,可以从属于某个线程,但不会开启线程。 也就是说,Application.Run会一直运行到Form关闭才会退出。2. 你没有给这个线程命名啊,你可以尝试获取ID,而不是名称,你会得到13. accept 可以新开一个线程,专门处理网络操作,界面线程就不要去阻塞了。关于前面的问题,你可以看看 
    start a c# application这是我自己写的,有问题可以再讨论 ^_^