while(true)
{
 MessageBox.Show("laile");
                        SaveFileDialog sfd = new SaveFileDialog();                       // SaveFileDialog sfd = new SaveFileDialog();
                        sfd.InitialDirectory = "F:\\";
                        sfd.Filter = "(*.txt)|*.*|(*.cs)|*.cs";    //打开cs文件或text
                        sfd.RestoreDirectory = true;
                        sfd.FilterIndex = 0;
                        MessageBox.Show("qunale");
                        if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            string filename = sfd.FileName;
                            using (FileStream fs = new FileStream(filename, FileMode.Create))
                            {
                                fs.Write(arrmsg, 1, length - 1);
                                add("保存成功" + filename);
                            }
                        }
MessageBox.Show("kazhule");
}
这其中“laile” “qunale”可以显示出来而“kazhule”不能显示出来,明显它卡在保存窗口这了。  试着 又写了一个能行,上面的代码创建了线程进行接收文件,可就是不能显示保存的窗口,求指点,是哪出错了

解决方案 »

  1.   

    那个是模态框,等待用户响应
    你可以
                       System.Threading.ThreadPool.QueueUserWorkItem(obj=> 
                       {
                            var dialog = (SaveFileDialog)obj;
                            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                string filename = dialog.FileName;
                                using (FileStream fs = new FileStream(filename, FileMode.Create))
                                {
                                    fs.Write(arrmsg, 1, length - 1);
                                    add("保存成功" + filename);
                                }
                            }
                       }, sfd);
                   MessageBox.Show("kazhule");
      

  2.   

    看到写while循环的,我就头疼。