В моем приложении я открываю данные изображения в задании.Но когда я пытаюсь запросить свойство из BitmapSource внутри цикла while в той же функции, что и при создании изображения, я получаю следующую ошибку:
The calling thread cannot access this object because a different thread owns it
Но когда я вызываю свойство до того, какЦикл while работает без проблем.Насколько я знаю, это все в одной и той же функции?Итак, почему я получаю ошибку?
Код, который дает мне ошибку:
public AnalogInputs()
{
Task.Run(() =>
{
AnalogInputsSimulationTask();
});
}
private async void AnalogInputsSimulationTask()
{
BitmapSource bSource = new BitmapImage(new Uri("pack://application:,,,/Images/HBT_Light_Diode_Simulation.bmp"));
while (true)
{
var bytesPerPixel = (bSource.Format.BitsPerPixel + 7) / 8; //This line gives the error
await Task.Delay(1);
}
}
Но когда я форматирую функцию AnalogInputsSimulationTask, как это, она не дает мне ошибку:
private async void AnalogInputsSimulationTask()
{
BitmapSource bSource = new BitmapImage(new Uri("pack://application:,,,/Images/HBT_Light_Diode_Simulation.bmp"));
var bytesPerPixel = (bSource.Format.BitsPerPixel + 7) / 8; //Now there is no error
while (true)
{
await Task.Delay(1);
}
}
Так как это очень урезанная версия моей проблемы, мне нужен первый формат для работы, я хочу загрузить изображение один раз, а затем делать что-то с ним в цикле while.Но я не могу получить к нему доступ в цикле while.
Я знаю, что эта ошибка обычно возникает, когда вы пытаетесь получить доступ к GUI изнутри Задачи, но сейчас я все делаю в Задаче, и изображение не 't отображается или используется в графическом интерфейсе в любом месте.