遇到的问题:修改的聊天工具传输文件时, 发送端显示发送成功了,但是到接受端保存时,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执行完了才可以去执行其他的线程。