首页 新闻 会员 周边 捐助

C# 无法访问受保护的内存,这通常指示其他内存已损坏

0
悬赏园豆:80 [已关闭问题] 关闭于 2013-04-26 14:08

先上代码:

 1 private void PlayVideoBack(Bitmap frame)
 2 {
 3      lock (obLock)
 4     {
 5        BitmapData frame1Data = null;
 6        BitmapData frame2Data = null;
 7        try
 8        {
//防止大分辨率视频的时候内存来不及释放而溢出
9 if (_frame == null || _frame.Width != frame.Width || _frame.Height != frame.Height) 10 { 11 _frame = new Bitmap(frame.Width, frame.Height, frame.PixelFormat); 12 } 13 frame1Data = _frame.LockBits(new Rectangle(0, 0, _frame.Width, _frame.Height), ImageLockMode.ReadWrite, _frame.PixelFormat); 15 frame2Data = frame.LockBits(new Rectangle(0, 0, _frame.Width, _frame.Height), ImageLockMode.ReadWrite, _frame.PixelFormat); 17 Win32API.CopyMemory(frame1Data.Scan0, frame2Data.Scan0, (uint)(frame1Data.Stride * frame1Data.Height)); 18 } 19 finally 20 { 21 if (frame1Data != null) 22 { 23 _frame.UnlockBits(frame1Data); 24 } 25 if (frame2Data != null) 26 { 27 frame.UnlockBits(frame2Data); 28 } 29 } 30 Graphics g = _playBackPictureBox.CreateGraphics(); 31 g.DrawImage(frame, new Rectangle(0, 0, _playBackPictureBox.Width , _playBackPictureBox.Height)); 32 g.Dispose(); 33 frame.Dispose(); 34 } 35 }

我做的是视频播放,方法是调用解码视频的SDK(引用dll的方式),上面是解码回调,返回每一帧,我将每帧画在picturebox上;单独进行播放的时候,还算正常;

但是在我刷屏幕、拖动其他工具盖住显示界面,或者像QQ那种靠边隐藏、显示,而产生的刷屏都会在代码处红色部分报错,提示:无法访问受保护的内存,这通常指示其他内存已损坏;播放的时候,界面有东西刷新画面就在闪烁,闪烁严重就报错崩溃;有时候VS2010就提示“需要重启”

请问是什么原因?如何解决?先在此多谢了!!

问题补充:

怎么没有人给详细的解答呢?难道高手都不逛园子了?

jobrk的主页 jobrk | 初学一级 | 园豆:110
提问于:2013-04-25 14:33
< >
分享
所有回答(4)
0

picturebox 上面放东西 你真是人才。。。。

丫的 | 园豆:1575 (小虾三级) | 2013-04-25 15:19

为什么不适合放东西?有没有什么好的解决方案吗?

支持(0) 反对(0) jobrk | 园豆:110 (初学一级) | 2013-04-25 15:40
0

确实有才...

云出无心 | 园豆:206 (菜鸟二级) | 2013-04-25 15:37

此话怎讲?愿悉心受教!

支持(0) 反对(0) jobrk | 园豆:110 (初学一级) | 2013-04-25 15:41
0

这样也可以吗?

FengLu-1 | 园豆:112 (初学一级) | 2013-04-25 17:16

Why not?

支持(0) 反对(0) jobrk | 园豆:110 (初学一级) | 2013-04-25 17:18

@jobrk: 我不是很懂,向你学习了

支持(0) 反对(0) FengLu-1 | 园豆:112 (初学一级) | 2013-04-26 17:33
0

可能是CreateGraphics的原因,连续画图片,会导致闪烁,如果和其他在同一个区域画图的程序同时刷新就会出现该问题;目前就是将image赋值,唯一担心就是内存来不及释放;

jobrk | 园豆:110 (初学一级) | 2013-04-26 14:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册