вектор не работает в лямбда с привязкой данных - PullRequest
0 голосов
/ 06 октября 2018

У меня есть элемент управления TreeView XAML.Я привязываю данные к вектору со свойством:

    property Windows::Foundation::Collections::IObservableVector<TreeViewData^>^ Items
    {
        Windows::Foundation::Collections::IObservableVector<TreeViewData^>^ get() { return _containerItems; }
    }

Если я добавлю вектор из лямбда-выражения для моей асинхронной операции, это нормально.Если я добавляю в лямбду, я получаю эту ошибку:

Исключение, выданное в 0x00007FF8E8845419 в DevicePanels.exe: исключение Microsoft C ++: Platform :: InvalidCastException ^ в расположении памяти 0x0000001011AFE5A0.HRESULT: 0x80004002 Нет такого интерфейса, поддерживаемого Информация WinRT: Нет такого интерфейса, поддерживаемого

// this works       
_containerItems->Append(ref new TreeViewData());
_handlerAdded = ref new TypedEventHandler<DeviceWatcher^, DeviceInformation^>(
    [this](DeviceWatcher^ sender, DeviceInformation^ deviceInfo)
{
    Dispatcher->RunAsync(CoreDispatcherPriority::Low, ref new DispatchedHandler(
        [this, deviceInfo]()
    {   
        // this does not work
        _containerItems->Append(ref new TreeViewData(deviceInfo));

Кажется, что основное отличие будет связано с тем, в каком потоке работает добавление, но код ошибки - E_NOINTERFACE

Есть предложения?

...