我在我的应用程序中使用 Apache Thrift 在多台机器之间交换数据。
我从外太空接收数据,创建传输、协议并将接收到的数据反序列化为对象。这是我的代码:
using (var memoryStream = new MemoryStream(data))
{
using (var transport = new TStreamTransport(memoryStream, memoryStream))
{
transport.Open();
using (var protocolo = new TBinaryProtocol(transport))
{
var result = new TCciUserLoginV1.cciUserLoginV1_result();
while (result.Success== null)
{
try
{
result.Read(protocolo);
}
catch { }
}
if (result.Success != null)
{
res = new RequestResult(result.Success);
}
else
{
res = new RequestResult(ResultCodes.LOCAL_ERROR");
}
}
}
}
我知道,我收到二进制序列化的TCciUserLoginV1.cciUserLoginV1_result,因为其他类型的反序列化会引发异常。但是 result.Success 属性的正常反序列化仅在 while 循环的第 10 次迭代后发生。为什么我使用while。谁能告诉我发生了什么事?
提前致谢。