diff --git a/vnext/ReactUWP/Views/Image/ReactImage.cpp b/vnext/ReactUWP/Views/Image/ReactImage.cpp index a5fa138b6a7..6fde2d8b508 100644 --- a/vnext/ReactUWP/Views/Image/ReactImage.cpp +++ b/vnext/ReactUWP/Views/Image/ReactImage.cpp @@ -97,9 +97,17 @@ namespace react { winrt::LoadedImageSurface::StartLoadFromStream(memoryStream) : winrt::LoadedImageSurface::StartLoadFromUri(uri) }; - surface.LoadCompleted({ this, &ReactImage::LoadedImageSurfaceHandler }); - - m_brush->Source(surface); + surface.LoadCompleted([weak_this{ get_weak() }, surface](winrt::LoadedImageSurface const& /*sender*/, winrt::LoadedImageSourceLoadCompletedEventArgs const& args) { + if (auto strong_this{ weak_this.get() }) { + bool succeeded{ false }; + if (args.Status() == winrt::LoadedImageSourceLoadStatus::Success) { + strong_this->m_brush->Source(surface); + succeeded = true; + } + + strong_this->m_onLoadEndEvent(*strong_this, succeeded); + } + }); } } catch (winrt::hresult_error const&) @@ -108,18 +116,6 @@ namespace react { } } - void ReactImage::LoadedImageSurfaceHandler(winrt::LoadedImageSurface const& sender, winrt::LoadedImageSourceLoadCompletedEventArgs const& args) - { - bool succeeded{ false }; - if (args.Status() == winrt::LoadedImageSourceLoadStatus::Success) - { - m_brush->Source(sender.as()); - succeeded = true; - } - - m_onLoadEndEvent(*this, succeeded); - } - winrt::IAsyncOperation GetImageStreamAsync(ImageSource source) { try