在.net中使用远程处理时序列化异常

时间:2016-10-13 11:51:08

标签: .net serialization .net-remoting

我正在尝试使用.net远程访问来访问远程PC上的对象。

该对象具有一个名为bool SetBitmap(System.drawing.Bitmap bitmap)的函数。每当客户端调用此函数时,服务器都应将位图传递给名为bool Save(void* data, int size)的非托管dll函数。但是在我这样做之前,我将托管位图复制到非托管内存中:

bool SetBitmap(System.drawing.Bitmap bitmap)
{
    Rectangle rect = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
    System.Drawing.Imaging.BitmapData bmpData = m_bitmap.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

    bool result = Save(bmpData.Scan0, bitmap.Height * bitmap.Width * 3);

    bitmap.UnlockBits(bmpData);

    return result;
}

但是,当我调用此函数时,我在客户端端获得了一个例外。

Unhandled Exception: System.Runtime.Serialization.SerializationException: Type '
System.Drawing.Imaging.BitmapData' in Assembly 'System.Drawing, Version=4.0.0.0,
 Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable

我想它与远程处理有关,但为什么我的客户端关心服务器上某个对象的局部变量不可序列化?或者我的假设是对象只存在于服务器pc上错误?我想要的是我的客户端调用一些接口,让魔法发生在服务器上,然后等待服务器给它一个结果。

关于如何解决此问题的任何想法?

0 个答案:

没有答案