gpt4 book ai didi

c# - 如何检测文件是否使用 C# 的 silverlight saveDialog 打开?

转载 作者:行者123 更新时间:2023-11-30 17:15:35 24 4
gpt4 key购买 nike

如果一个文件被另一个应用程序打开,然后我尝试通过 Silverlight SaveDialog 保存它,我可以用异常捕获错误,但在那之后我得到这个错误。

第 57 行错误:Silverlight 应用程序中未处理的错误代码:4004
分类:ManagedRuntimeError
消息:System.InvalidOperationException:此操作只能发生在 UI 线程上。 在 System.Windows.Hosting.NativeHost.VerifyThread() 在 System.Windows.SaveFileStream.Dispose( bool 处理) 在 System.IO.FileStream.Finalize()

我更愿意检测文件是否打开,但似乎无法做到这一点。我尝试了 fs.CanWrite,但它返回 true,即使该文件已被另一个应用程序打开。

编辑:Here是 silverlight 论坛上的一篇帖子,似乎解释了正在发生的事情,尽管他们认为这只是 Office 文件。我遇到了 PDF 文件的问题。

这是我的代码:

    public void PDFSaveFile(bool success)
{
// silverlight requires saveFileDialog to be user-initiated,
// so this is called from the OK button of a pop-up window
// ignore success, we only gave an OK option
byte[] fileBytes = doc.ToPDF().ToArray();
PDFClose();

try
{
SaveFileDialog saveFileDlg = new SaveFileDialog();
saveFileDlg.Filter = "PDF files (*.pdf)|*.pdf";
bool? dialogResult = saveFileDlg.ShowDialog();
if (dialogResult == true)
{
using (var fs = saveFileDlg.OpenFile())
{
fs.Write(fileBytes, 0, fileBytes.Length);
fs.Close();
}
}
}
catch (Exception ex)
{
Log.HandleInternalError(string.Format("Unable to save file: {0}",ex.Message));
}
}

最佳答案

你可以使用文件信息.打开如果返回 IOException = File already opened

FileInfo.Open

关于c# - 如何检测文件是否使用 C# 的 silverlight saveDialog 打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7891023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com