我正在使用C#开发一个Silverlight 3应用程序。我想允许用户从该应用程序中下载图像。我使用SaveFileDialog执行文件下载任务,流程如下:
- 用户在SL应用程序中单击下载按钮。
- 调用Web服务以从服务器获取图像。
- 在完成异步事件处理程序中调用Web方法并接收来自服务器的二进制图像。
- 在OnCompleted事件处理程序中,提示用户选择保存图像到计算机的位置。
- 将图像流式传输到用户硬盘上的文件中。
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "JPG Files|*.jpg" + "|All Files|*.*";
bool? dialogResult = dialog.ShowDialog();
if (dialogResult == true)
{
using (Stream fs = (Stream)dialog.OpenFile())
{
fs.Write(e.Result, 0, e.Result.Length);
fs.Close();
}
}
在上述代码中,如果调用ShowDialog方法,SaveFileDialog会抛出“对话框必须由用户启动”的错误。我可能错过了什么?如何解决这个问题?