我正在尝试使用.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上错误?我想要的是我的客户端调用一些接口,让魔法发生在服务器上,然后等待服务器给它一个结果。
关于如何解决此问题的任何想法?