Macos 文件保存时,Silverlight应用程序在Mac上冻结
启动Macos 文件保存时,Silverlight应用程序在Mac上冻结,macos,silverlight,freeze,Macos,Silverlight,Freeze,启动SaveFileDialog然后保存数据的代码非常简单。 打开提示,我可以选择保存位置,它保存文件,然后整个选项卡/应用程序冻结。显然,在Windows/IE上工作正常。有什么建议吗 private void SavePDFFile() { var saveFileDialog = new SaveFileDialog {
SaveFileDialog
然后保存数据的代码非常简单。
打开提示,我可以选择保存位置,它保存文件,然后整个选项卡/应用程序冻结。显然,在Windows/IE上工作正常。有什么建议吗
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;
}
}
@katit I在开发Silverlight OOB应用程序时也遇到了这个问题。。我的应用在Windows上运行得很好,但在Mac上它被冻结了,我不得不强制退出以再次使用它 我实际上是在从服务器读取PDF(存储在字段类型-‘varbinary’)并将其存储到用户的本地机器上 我的解决方案是分部分下载文件块(我使用的缓冲区大小为-1MB) 不确定应用程序冻结时使用的文件大小。。但我认为,将“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;
}
}
回答我自己的问题。这与代码本身无关。这是安全问题。为了允许这段代码在Mac上执行(看起来IE的新版本也是如此),您需要给它更多的权限 在IE上,您需要将网站添加到受信任的网站列表中
在Mac上-您需要将Silverlight设置为在“不安全”模式下运行。这在Preferences/Security/Silverlight中,需要选择网站,按住“Option”键,然后打开下拉菜单查看该选项。花了一段时间才找到答案。你能回顾一下我的答案并让我知道它是否有用吗。不,这不是我的问题所在。好的。。谢谢你的回答。我想如果是因为文件太大。