Итак, я хочу отправить изображение из моего приложения WPF на контроллер Web API. Когда я получаю изображение как BitmapImage и пытаюсь отправить его, я получаю сообщение об ошибке «вызывающий поток не может получить доступ к этому объекту, потому что другой поток владеет им». Я не вижу, как я изменяю интерфейс и почему я получаю ошибку. Вот код:
Код WPF:
private void BtnSendImage_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.InitialDirectory = Environment.SpecialFolder.MyDocuments.ToString();
BitmapImage slika = null;
if (ofd.ShowDialog() == true)
{
odabranaSlika = ofd.FileName;
Uri adresa = new Uri(odabranaSlika, UriKind.Absolute);
slika = new BitmapImage(adresa);
ItemDAL idal = new ItemDAL();
if (idal.SendImage(slika))
{
MessageBox.Show("Yay!");
}
else
{
MessageBox.Show("Awwww");
}
}
}
Метод SendImage из класса ItemDAL (код останавливается на части postResult.Wait ()):
public bool SendImage(BitmapImage bmp)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:52407/");
var postResult = client.PostAsJsonAsync<BitmapImage>("api/values/postimage", bmp);
postResult.Wait();
var result = postResult.Result;
if (result.IsSuccessStatusCode)
{
return true;
}
else
{
return false;
}
}
}
Что я делаю не так? Я знаю, что я не собираюсь изменять пользовательский интерфейс, если только он не из основного потока, бот, как это влияет на пользовательский интерфейс?