У меня есть элемент управления 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
Есть предложения?