Win7解决了Silverlight的SaveFileDialog的一个Bug?
昨天在公司很碰巧在用SaveFileDialog()导出xml至硬盘,无意中选择了一个只有读取权限的目录,在提示了没有写入权限之后,过了一会就抛出了未处理异常,然后就整个页面一片空白了,在调试了代码之后,更改了一种写法,结果一样会出现异常,于是认为应是Silverlight的Bug,由于使用的是Silverlight 4 Beta,不敢确定是不是只是SL4的Bug。
回家后针对此问题重新调试起了程序,这次用的是 Silverlight 3.0 的版本,测试环境为 Windows XP、Win2003 和 Win7,代码如下:
private void button1_Click(object sender, RoutedEventArgs e){ SaveFileDialog saveFileDlg = new SaveFileDialog(); if (saveFileDlg.ShowDialog().Value) { try { // 尝试没有写入权限的目录(如局域网共享目录),Win2003 或 XP 马上出现异常 using (System.IO.Stream fs = saveFileDlg.OpenFile()) { } } catch (Exception ex) { MessageBox.Show(ex.Message); } }}
using (System.IO.Stream fs = saveFileDlg.OpenFile()) { }
SaveFileDialog saveFileDlg = new SaveFileDialog(); System.IO.Stream fs = null; if (saveFileDlg.ShowDialog().Value) { try { // 尝试没有写入权限的目录(如局域网共享目录),Win2003 或 XP 马上出现异常 fs = saveFileDlg.OpenFile(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { // saveFileDlg.OpenFile()异常后不会执行 fs.Close(),因为 fs==null if (fs != null) { try { fs.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } }
SaveFileDialog saveFileDlg = new SaveFileDialog(); try { if (saveFileDlg.ShowDialog().Value) { try { // 尝试没有写入权限的目录(如局域网共享目录),Win2003 或 XP 马上出现异常 using (System.IO.Stream fs = saveFileDlg.OpenFile()) { } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } catch (Exception ex) { MessageBox.Show(ex.Message); }