Я работаю над приложением Silverlight 3 с С#. Я хотел бы разрешить пользователю загружать изображение из приложения Silverlight. Я использую SaveFileDialog для выполнения задачи загрузки файлов. Поток идет следующим образом:
- Пользователь нажимает кнопку Загрузить в приложении SL.
- Вызов службы веб-сервиса для получения изображения с сервера
- OnCompleted обработчик события async вызова метода веб-вызова get вызывается и получает двоичное изображение с сервера
- В обработчике событий OnCompleted SaveFileDialog запрашивает у пользователя сохранение изображения на компьютере.
- Поток изображения в файл на жестком диске пользователя.
Я использую следующий код в функции, которая вызывается из обработчика события OnCompleted, чтобы выполнить приглашение SaveFileDialog, а затем потоковая передача в файл.
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();
}
}
SaveFileDialog выкидывает ошибку "Диалоги должны быть инициированы пользователем". при вызове метода ShowDialog в приведенном выше коде. Что я могу здесь пропустить? Как преодолеть это?