我收到以下异常
"检查元数据时超时;这可能表示死锁。这通常可以通过在应用程序初始化期间准备必要的序列化程序来避免,而不是允许多个线程执行初始元数据检查;另请参阅 LockContended 事件 (System.String) "
尝试使用 protobuf.net 序列化/反序列化对象时。我将 protobuf.net 用于 Silverlight 和 WCF 服务。在 WCF 服务上序列化结果并在客户端(Silverlight)端反序列化相同的响应。
我为此使用了扩展方法。这是代码
public static byte[] GetSerializeByteArray<T>( this T entity )
{
using ( var stream = new MemoryStream() )
{
Serializer.Serialize( stream, entity );
return stream.ToArray();
}
}
public static T DeserializeByteArray<T>( this byte[] byteArray )
{
if ( byteArray == null )
{
throw new ArgumentNullException( "byteArray" );
}
try
{
using ( Stream result = new MemoryStream( byteArray ) )
{
return Serializer.Deserialize<T>( result );
}
}
catch ( Exception )
{
throw new InvalidOperationException( "Invalid Type" );
}
}
这是我们的模型类,它驻留在其他项目(可移植类库)上,并在客户端(Silverlight)和服务器(WCF)端都使用。
[ProtoContract]
public class Class1
{
[ProtoMember( 1 )]
public string Name
}
我不明白为什么这个异常一次又一次地发生!您能否向我解释一下,这是使用 protobuf-net 实现的正确方法吗?