Вот пример кода, чтобы лучше проиллюстрировать, что я пытаюсь здесь сделать. В основном мне нужно установить свойство, которое можно установить только из потока пользовательского интерфейса. Есть идеи?
public ref class ExtendedImage : public System::Windows::Controls::Image
{
public:
void SetImageFromUrl (System::String^ url)
{
if (!System::Uri::TryCreate (path, System::UriKind::Absolute, this->m_uri) || this->m_uri->IsFile)
return;
System::Threading::Thread^ downloadImage = gcnew System::Threading::Thread (gcnew System::Threading::ThreadStart (this, &ExtendedImage::DownloadAndSetImage));
downloadImage->Start ();
}
private:
System::Uri^ m_uri;
void DownloadAndSetImage ()
{
System::Windows::Media::Imaging::BitmapImage^ bitmap = gcnew System::Windows::Media::Imaging::BitmapImage (this->m_uri);
//execute this->Source = bitmap; on UI thread
}
}
Обновление: немного полезной информации после объединения кода вопроса для правильного ответа на решение C#. Чтобы получить диспетчер потока пользовательского интерфейса, используйте System::Windows::Application::Current->Dispatcher
.