在Silverlight中保存到已经打开的文件时出现未处理的异常。

3
我正在尝试编写逻辑,将文件保存到Silverlight 4.0的本地磁盘中。我使用SaveFileDialog类来实现这一点。它可以正常工作。但是当我尝试保存一个已经打开以进行查看的文件时,我会收到未处理的异常。应用程序也会立即崩溃。
在Silverlight 3中也存在类似的问题。那里我通过在application_unhandledexception事件中搜索一些异常中的SaveFileStream文本来解决了这个问题。我认为这在Silverlight 4中会被处理,但现在情况变得更糟了。即使是这种解决方法现在也不起作用。
我在SaveFileDialog逻辑和IOException(另一个进程正在使用文件)周围放置了try catch,但是立即触发了上述描述的异常。
任何帮助都将不胜感激。
更新:这种情况发生在Excel文件中,而在txt文件中没有发生。我想这会发生在所有MS Office文件中。

官方论坛上关于这个问题的帖子


我无法使用文本或Excel文件重现此问题。我正在运行Silverlight 4.0.60531.0,你在运行什么?http://www.silverlightversion.com/ - Bryant
Excel会特别保持文件句柄以防止多个用户修改工作表(除非以“只读”模式打开)。您能否展示一下您用来吞咽异常的代码? - iCollect.it Ltd
1个回答

1

请问您如何保存文件呢? 流(Stream)是否正确地被刷新(flushed),关闭(closed)和释放(disposed)了呢?

这里有一个示例(注意:还有很多其他的方法):

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();
}

希望它能有所帮助 :-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接