在 UWP AppServiceConnection 中检索字节数组

Retrieving a byte array in an UWP AppServiceConnection

继续,我试图在 AppServiceConnection 之间传递数据。我对发送和接收字节数组感兴趣。 感谢 ,我知道可接受的类型。但问题是我不知道如何在接收端重现数据,而且没有这方面的文档。

特别是,我有以下内容:

Platform::Array<unsigned char>^ binaryData;
// ... Omitted code to construct the actual data ...
auto data = ref new ValueSet();
data->Insert("bin", binaryData);
if (_connection != nullptr)
    create_task(_connection->SendMessageAsync(data));

在我的服务代码和接收者代码中,我有

// Reproduce the data for processing
Platform::Array<unsigned char>^ binaryData = safe_cast<Platform::Array<unsigned char>^>(data->Lookup("bin"));

但这会使接收器崩溃。我尝试打印出对象 data->Lookup("bin") 并查看它的类型 Windows.Foundation.IArrayReference.

编辑:我真傻,this page 已经告诉我我需要先将其转换为 IBoxArray 并通过 [=17= 获取数组] 属性:

Platform::Array<unsigned char>^ binaryData = safe_cast<Platform::IBoxArray<unsigned char>^>(data->Lookup("bin"))->Value;

会完成任务的。

The documentation for IReferenceArray 表示首先将其转换为 IBoxArray 并通过 Value 属性 获取实际数组:更改为

Platform::Array<unsigned char>^ binaryData = safe_cast<Platform::IBoxArray<unsigned char>^>(data->Lookup("bin"))->Value;

会完成任务的。