保存文件时Silverlight应用程序在Mac上冻结
非常简单的代码启动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;
}
}
回答我自己的问题。这与代码本身无关。这是安全问题。为了让这些代码在Mac上执行(似乎也是IE的新版本),你需要给它更多的权限。
在IE浏览器,你需要添加网站受信任站点列表。
在Mac上 - 你需要设置的Silverlight在“不安全”模式下运行。这是在首选项/安全/ Silverlight中,需要选择网站,按住“Option”键,然后打开下拉菜单查看该选项。花了一段时间找到它..
@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;
}
}
不,这不是我的问题。 – katit
好的..谢谢你的回答。我想如果这是由于文件的大小。 –
你可以请检阅我的答案,让我知道它是否有帮助。 –