Помогите разобраться с потоками WPF

Выношу загрузку информации в другие потоки через Task.Run и столкнулся с проблемой.

Этот код работает:

Task.Run(()=> News.Load().ContinueWith(news =>
        {
            foreach (NewsObject n in news.Result)
            {
                this.Dispatcher.Invoke(() =>
                {
                    Home_NewsListView.Items.Add(new TextBlock().Text = n.Title);
                });
            }
        }));

News.Load() это async Task

Но если я хочу загрузить изображение в Image, то появляется исключение Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток.:

Task.Run(()=> UserProfile.loaduseravatar(User).ContinueWith(avatar =>
        {
            this.Dispatcher.Invoke(() =>
            {
                if (avatar.Result != null)
                {
                    User_avatar.Source = avatar.Result; //Тут вылезает исключение
                }
            });
        }));

UserProfile.loaduseravatar(User) это async Task

public static async Task <BitmapImage> loaduseravatar(UserInfo User)
    {
        try
        {
            BitmapImage bitmap = new BitmapImage();
            bitmap.BeginInit();
            bitmap.UriSource = new Uri(User.AvatarURL);
            bitmap.EndInit();
            return bitmap;
        }
        catch (Exception ex)
        {
            return null;
        }
    }

Ответы (1 шт):

Автор решения: FAR747

В итоге сделал так:

XAML:

Image x:Name="avatar" HorizontalAlignment="Left" Height="64" Margin="2.5,0,0,0" Width="64" Source="{Binding AvatarUri, IsAsync=True}"/>

Code Behind:

class VMData : INotifyPropertyChanged
    {
        string avataruri;
        public string AvatarUri
        {
            get => avataruri;
            set
            {
                avataruri = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(AvatarUri)));
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;
    }


public MainWindow()
        {
            InitializeComponent();
            DataContext = new VMData();
            logincomplete();
        }
private void logincomplete()
            {
                var vm = (VMDataContext)DataContext;
                vm.AvatarUri = "https://www.gravatar.com/avatar/616c357f3f6fe7d3bc84bd495b43d93c";
            }
→ Ссылка