开发视频监控系统纪实 10 视频录制过程中的内存无法写入问题
2008-10-24 12:53
766 查看
之前把delegate变成一个方法的内部变量,结果一录像就:
对“WindowsApplication1!Pixysoft.HikVision.STREAM_DIRECT_READ_CALLBACK::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
后来作为了外部域录像录制了10多秒,就提示:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
估计是内存释放问题。。。
汇总以下,肯定是delegate被回收的问题。参考文献:
http://msdn.microsoft.com/zh-cn/library/43yky316(VS.80).aspx
http://topic.csdn.net/u/20080423/03/43b58852-5cac-4aac-a7da-6a69e69b21cd.html
reference:
http://msdn.microsoft.com/zh-cn/library/system.gc.keepalive.aspx
http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.languages.csharp/2006-09/msg01380.html
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/d12c13a6-f103-48c8-9933-291a1685941a/
http://blog.csdn.net/fanweiwei/archive/2007/09/11/1780742.aspx
http://social.msdn.microsoft.com/Forums/en-US/clr/thread/66ea26a6-7c3d-4e96-9336-e3f148659f22/
http://topic.csdn.net/u/20080423/03/43b58852-5cac-4aac-a7da-6a69e69b21cd.html
keyword:GC, CALLBACK,DELEGATE, DLLIMPORT
问题解决了。是接口声明问题:
错误的声明:
public delegate int StreamDirectReadCallback(int channelNumber, [MarshalAs(UnmanagedType.LPArray, SizeConst = 704 * 576 * 5)] byte[] DataBuf, uint Length, Pixysoft.HikVision.DS40xxSDK.FrameType_t FrameType, System.IntPtr context);
正确的声明:
public delegate int StreamDirectReadCallback(int channelNumber, IntPtr DataBuf, uint Length, Pixysoft.HikVision.DS40xxSDK.FrameType_t FrameType, System.IntPtr context);
对“WindowsApplication1!Pixysoft.HikVision.STREAM_DIRECT_READ_CALLBACK::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
后来作为了外部域录像录制了10多秒,就提示:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
估计是内存释放问题。。。
汇总以下,肯定是delegate被回收的问题。参考文献:
http://msdn.microsoft.com/zh-cn/library/43yky316(VS.80).aspx
http://topic.csdn.net/u/20080423/03/43b58852-5cac-4aac-a7da-6a69e69b21cd.html
reference:
http://msdn.microsoft.com/zh-cn/library/system.gc.keepalive.aspx
http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.languages.csharp/2006-09/msg01380.html
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/d12c13a6-f103-48c8-9933-291a1685941a/
http://blog.csdn.net/fanweiwei/archive/2007/09/11/1780742.aspx
http://social.msdn.microsoft.com/Forums/en-US/clr/thread/66ea26a6-7c3d-4e96-9336-e3f148659f22/
http://topic.csdn.net/u/20080423/03/43b58852-5cac-4aac-a7da-6a69e69b21cd.html
keyword:GC, CALLBACK,DELEGATE, DLLIMPORT
问题解决了。是接口声明问题:
错误的声明:
public delegate int StreamDirectReadCallback(int channelNumber, [MarshalAs(UnmanagedType.LPArray, SizeConst = 704 * 576 * 5)] byte[] DataBuf, uint Length, Pixysoft.HikVision.DS40xxSDK.FrameType_t FrameType, System.IntPtr context);
正确的声明:
public delegate int StreamDirectReadCallback(int channelNumber, IntPtr DataBuf, uint Length, Pixysoft.HikVision.DS40xxSDK.FrameType_t FrameType, System.IntPtr context);
相关文章推荐
- 开发视频监控系统纪实 7 Callback问题
- 开发视频监控系统纪实 11 网络启动服务器的问题
- 开发视频监控系统纪实 12 网络开发的Checkpassword问题
- 开发视频监控系统纪实 6 DllImport问题
- 开发视频监控系统纪实 8 Callback问题解决
- 开发视频监控系统纪实 9 Callback问题解决 again
- 开发视频监控系统纪实 五 海康部署完毕
- 开发视频监控系统纪实 一
- 开发视频监控系统纪实 四 开康开发dll 修正
- 开发视频监控系统纪实 二 接线
- 开发视频监控系统纪实 14 Gtalk替换MSN
- 开发视频监控系统纪实 三 开康开发dll
- 开发视频监控系统纪实 13 穿越局域网
- 开发视频监控系统纪实 13 穿越局域网
- WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法
- Android studio 百度地图开发(10)语音播报的问题:能正常导航,但是无法语音播报
- 转:WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法
- 某店铺收银系统开发过程中出现的几点问题
- Android开发笔记——视频录制播放常见问题
- 今天在从装系统后在配置android开发环境的过程中遇到了一点小问题