SaveFileDialog 线程Join()

遇到的问题:修改的聊天工具传输文件时, 发送端显示发送成功了,但是到接受端保存时,savefiledialog 保存对话框就是弹不出来

解决方法:

在网上找到的解决方法,在主线程里面调用

修改前:

   SaveFileDialog saveFile = new SaveFileDialog();
            saveFile.Title = "选择保存路径 ";
            saveFile.OverwritePrompt = true;
            saveFile.FileName = fileNameAccept;

            //确定 
            if (saveFile.ShowDialog() == DialogResult.OK)
            {
                //路径取得 
                string localFilePath = saveFile.FileName.ToString();

             }

修改后:

              t_save = new Thread(saveDialog);//NEW一个新的线程
              t_save.IsBackground = true;

              t_save.SetApartmentState(ApartmentState.STA);//缺少这句话,就会出错误。
              t_save.Start();

              t_save.Join();//等待这个线程执行完才可以走其他的线程

                 public void saveDialog()

                {

                        SaveFileDialog saveFile = new SaveFileDialog();
                        saveFile.Title = "选择保存路径 ";
                        saveFile.OverwritePrompt = true;
                          saveFile.FileName = fileNameAccept;

                        //确定 
                        if (saveFile.ShowDialog() == DialogResult.OK)
                        {
                            //路径取得 
                            string localFilePath = saveFile.FileName.ToString();

                    }

除了不能弹出窗体,还遇到了一个问题就是路径还没选好呢,另外一个用到该路径的地方就抛出异常了,在网上查了一下发现可以用t_save.Join()方法,就是只有t_save行完了才可以去执行其他的线程。

猜你喜欢

转载自blog.csdn.net/csdn_RL/article/details/80745570