在UWP AppServiceConnection中检索字节数组

时间:2018-12-21 17:49:57

标签: uwp c++-cx

another question开始,我试图在AppServiceConnection之间传递数据。我对发送和接收字节数组感兴趣。 感谢this question,我知道了可接受的类型。但是问题是我不知道如何在接收端重现数据,也没有文档。

特别是,我有以下内容:

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并通过Value属性获取数组:

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

会做。

1 个答案:

答案 0 :(得分:0)

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

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

会做。