在 Silverlight 中保存到可移动驱动器

Posted

技术标签:

【中文标题】在 Silverlight 中保存到可移动驱动器【英文标题】:Saving to Removable Drive in Silverlight 【发布时间】:2011-04-16 22:33:08 【问题描述】:

在我的 SL3 应用程序中,我提示用户选择一个保存位置,由于目标受众,该位置很可能是一个可移动驱动器。

如果用户尝试弹出/移除驱动器,则 Windows 会抱怨它“正在使用中”。

如果用户随后再次将文件保存到固定驱动器,则可以弹出/移除可移动驱动器。

好像this .NET issue 正在发生。遗憾的是,由于 .NET 支持减少和 SL 安全限制,这两种解决方法都无法使用。

有什么想法吗?

【问题讨论】:

【参考方案1】:

你在使用 SaveFileDialog 吗?如果不是 - 那么情况并非如此。

没有看到任何代码有点难以回答,但有没有可能你没有关闭文件 (File.Close())?

据我记得您不能更改 SL 中的当前目录,所以我有点怀疑您的问题的原因与您链接中的解决方案相同。

【讨论】:

我正在使用 SaveFileDialog。然后:filestream.flush();文件流.close();文件流.Dispose();文件流=空; 虽然用户代码不可能更改当前目录,但我认为内部 .NET 代码可以做到这一点,因为从根本上说,SL 应用程序只是在用户的个人电脑。 Silverlight 是一个特殊的可执行文件,因为它存在于一个沙盒中,阻止它执行某些操作,但是 - 底层的 win32 表单可能有权更改当前目录。你能验证当前目录真的改变了吗?您可以在预定义的位置打开对话框吗?即“我的文件”? 您不能告诉对话框在特定文件夹中打开,但它会记住最后使用的文件夹,因此它存储在应用程序开发人员无法触及的“某处”。我认为正是这种记忆导致驱动器被标记为“正在使用”。

以上是关于在 Silverlight 中保存到可移动驱动器的主要内容,如果未能解决你的问题,请参考以下文章

在 Silverlight SaveFileDialog 中打开文件而不是保存文件

C# Silverlight 移动控件

如何在 Silverlight 应用程序中将 byte[] 保存为 wav 文件?

在浏览器应用程序之外的 SilverLight 中显示长时间运行的保存过程的进度

Python libinsane到可执行文件(制作exe后将dll文件保存在哪里)

从 mp4 中提取音轨并将其保存到可播放的音频文件中