Seguridad de subprocesos del recuento de referencia de un puntero WinRT C ++ / CX

Tenía la impresión de que el recuento de referencia para los objetos WinRT era seguro para subprocesos, dado el caso de uso. Pero me he encontrado con un error que no conozco de otra manera para explicar. Por ejemplo, el siguiente código se bloquea muy rápidamente:

ref class C sealed {
public:
    C() { }
    virtual ~C() {}
};

[Windows::Foundation::Metadata::WebHostHidden]
public ref class MainPage sealed {
public:
    MainPage() : _latest(nullptr) {
        InitializeComponent();
        Windows::System::Threading::ThreadPool::RunAsync(
            ref new Windows::System::Threading::WorkItemHandler(
                this, 
                &MainPage::SetLatest));
        Windows::System::Threading::ThreadPool::RunAsync(
            ref new Windows::System::Threading::WorkItemHandler(
                this, 
                &MainPage::OnRendering));
    }
    virtual ~MainPage(){}
private:
    C^ _latest;
    void SetLatest(Windows::Foundation::IAsyncAction^ operation){
        while (true) {
            _latest = ref new C(); 
        }
    }
    void OnRendering(Windows::Foundation::IAsyncAction^ operation) {
        while (true) {
            auto c = _latest;
        }
    }
};

Son punteros WinRT (es decir, un tipo de clase ref comoC^) ¿Se supone que la referencia se cuenta correctamente cuando las lecturas / escrituras están compitiendo? ¿Hay algún problema aparte que no conozca y que cause este bloqueo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta