Каков наилучший способ асинхронного возврата массива из компонента среды выполнения Windows, написанного на C ++ / WinRT, учитывая, что IAsyncOperation ‹TResult› не допускается в качестве возвращаемого типа, если TResult является массивом?
Можно обернуть массив в PropertyValue, но как упаковка, так и распаковка массива создают копии, что кажется неэффективным. На данный момент я пишу специальный компонент для хранения com_array (у которого есть конструктор, который позволяет мне перемещаться в com_array) с функцией DetachArray, которая перемещает массив при возврате к вызывающей стороне. Это лучший способ - он кажется немного сложным? Кроме того, в этом случае, если я вызываю функцию DetachArray из C #, копируется ли массив или нет? Я не знаю, как работает взаимодействие между управляемой и неуправляемой памятью. Я предполагаю, что использование com_array в отличие от std :: vector как-то связано с этим.