【问题标题】:Unhandled exception when saving to an already open file in silverlight保存到 Silverlight 中已打开的文件时出现未处理的异常
【发布时间】:2011-05-03 10:57:25
【问题描述】:

我正在尝试在 Silverlight 4.0 中编写将文件保存到本地磁盘的逻辑。我为此使用了SaveFileDialog 类。它工作正常。但是,当我尝试保存到已经打开以供查看的文件时,我得到了一个未处理的异常。应用程序也会立即崩溃。

Silverlight 3 也存在类似问题。我在 application_unhandledexception 事件中通过在异常中搜索一些 SaveFileStream 文本来解决这个问题。我认为这将在 Silverlight 4 中处理,但现在变得更糟了。即使是解决方法现在也不起作用。

我在SaveFileDialog 逻辑周围放置了try catch,IOException(另一个进程正在使用文件)在这里被安全地捕获,但立即触发了我上面描述的异常。

任何帮助将不胜感激。

更新:excel 文件会发生这种情况,而 txt 文件不会发生这种情况。我认为所有 MS Office 文件都会发生这种情况。

A post about the issue on the official forum

【问题讨论】:

  • 我无法使用文本或 excel 文件重现此内容。我正在运行 Silverlight 4.0.60531.0,你在运行什么? silverlightversion.com
  • Excel 专门保持文件句柄打开以阻止多个用户修改工作表(除非以 readonly 模式打开)。你能展示一下你用来吞下异常的代码吗?

标签: c# .net silverlight silverlight-4.0 savefiledialog


【解决方案1】:

请问您是如何保存文件的? 流是否已正确刷新、关闭和处置?

以此为例(注意:有很多替代方法可以这样做):

using (Stream stream = new IsolatedStorageFileStream("somefilename.ext", FileMode.Create, FileAccess.Write, IsolatedStorageFile.GetUserStoreForApplication()))
{
    // Use the stream normally in a TextWriter
    using (TextWriter writer = new StreamWriter(stream, Encoding.UTF8))
    {
        writer.Flush();
        writer.Close();
    }

    stream.Close();
}

希望对您有所帮助:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    相关资源
    最近更新 更多