2016-11-29 53 views
1

非常简单的代码启动SaveFileDialog然后保存数据。 打开提示,我可以选择保存的位置,保存文件,然后整个选项卡/应用程序冻结。显然,在Windows/IE上工作正常。有什么建议么?保存文件时Silverlight应用程序在Mac上冻结

private void SavePDFFile() 
     { 
      var saveFileDialog = new SaveFileDialog 
            { 
             DefaultExt = "pdf", 
             Filter = string.Format("Document(.{0})|*.{0}", "pdf"), 
             FilterIndex = 1, 
             DefaultFileName = DateTime.Now.ToString("HHmmMMddyyyy") 
            }; 

      var saveClicked = saveFileDialog.ShowDialog(); 
      if (!saveClicked.HasValue || !saveClicked.Value) return; 
      var fileStream = saveFileDialog.OpenFile(); 

      try 
      { 
       this.IsBusy = true; 
       fileStream.Write(this.PDFData, 0, this.PDFData.Length); 
       fileStream.Close(); 
      } 
      catch (Exception ex) 
      { 
       this.DisplayErrorMessage("Error saving PDF file", ex); 
      } 
      finally 
      { 
       this.IsBusy = false; 
      } 
     } 
+0

你可以请检阅我的答案,让我知道它是否有帮助。 –

回答

1

回答我自己的问题。这与代码本身无关。这是安全问题。为了让这些代码在Mac上执行(似乎也是IE的新版本),你需要给它更多的权限。

在IE浏览器,你需要添加网站受信任站点列表。

在Mac上 - 你需要设置的Silverlight在“不安全”模式下运行。这是在首选项/安全/ Silverlight中,需要选择网站,按住“Option”键,然后打开下拉菜单查看该选项。花了一段时间找到它..

0

@katit我也面临这个问题上一个Silverlight OOB应用程序的工作..我的应用程序在Windows中工作正常,但同时在它的Mac冻结得到了我和不得不强制退出再次使用它。

实际上,我是读PDF(存储在字段类型 - “VARBINARY”)从服务器并将其存储到用户的本地机器上。

的解决方案为我是下载的文件块的部分(我用的缓冲区大小 - 1 MB)。

不知道你正在使用的文件大小,当你的应用程序获得冻结..但我觉得,写“PDFData”小部分FILESTREAM可以帮助你。

此外,添加filestream.Flush(); (请参阅下面的代码突出显示),看看是否有帮助:

private void SavePDFFile() 
    { 
     var saveFileDialog = new SaveFileDialog 
           { 
            DefaultExt = "pdf", 
            Filter = string.Format("Document(.{0})|*.{0}", "pdf"), 
            FilterIndex = 1, 
            DefaultFileName = DateTime.Now.ToString("HHmmMMddyyyy") 
           }; 

     var saveClicked = saveFileDialog.ShowDialog(); 
     if (!saveClicked.HasValue || !saveClicked.Value) return; 
     var fileStream = saveFileDialog.OpenFile(); 

     try 
     { 
      this.IsBusy = true; 
      fileStream.Write(this.PDFData, 0, this.PDFData.Length); 
      **filestream.Flush();** 
      fileStream.Close(); 
     } 
     catch (Exception ex) 
     { 
      this.DisplayErrorMessage("Error saving PDF file", ex); 
     } 
     finally 
     { 
      this.IsBusy = false; 
     } 
    } 
+0

不,这不是我的问题。 – katit

+0

好的..谢谢你的回答。我想如果这是由于文件的大小。 –