2016-11-29 59 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

好的..謝謝你的回答。我想如果這是由於文件的大小。 –