求助!!程序跑了1个小时之后出现大红叉,然后就死了

XS_YOUYOU 2015-09-30 07:48:58

还可能会直接报错,错误信息如下
未处理 System.Runtime.InteropServices.ExternalException
Message=GDI+ 中发生一般性错误。
Source=System.Drawing
ErrorCode=-2147467259
StackTrace:
在 System.Drawing.Image.SelectActiveFrame(FrameDimension dimension, Int32 frameIndex)
在 System.Drawing.ImageAnimator.ImageInfo.UpdateFrame()
在 System.Drawing.ImageAnimator.UpdateFrames()
在 System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)
在 System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
在 System.Windows.Forms.Control.WmPaint(Message& m)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
在 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.Run(Form mainForm)
在 FiveAxisSimulator.Program.Main()
在 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart()
InnerException:

小弟新手,折腾了好几天了,实在搞不定
...全文
199 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
XS_YOUYOU 2015-10-01
  • 打赏
  • 举报
回复
引用 13 楼 wyd1520 的回复:
Image.FromFile 就是这句啦,要释放。
大神,好像的确如此,我将Image.FromFile全都删了,我现在采用将图片导入项目资源,然后再在程序中调用,目前还在测试中,观察到内存趋于稳定,偶尔会增加一点,偶尔会减少,先等上1个小时再说。
本拉灯 2015-10-01
  • 打赏
  • 举报
回复
Image.FromFile 就是这句啦,要释放。
XS_YOUYOU 2015-10-01
  • 打赏
  • 举报
回复
引用 10 楼 daixf_csdn 的回复:
[quote=引用 4 楼 XS_YOUYOU 的回复:]
[quote=引用 2 楼 starfd 的回复:]
看你异常里面有Thread,你是不是跨线程操作主线程控件了?而且还是用的最粗暴的设置全局属性不检测是否跨线程操作控件?你得找哪些地方用了线程,然后看哪些会频繁更新控件,还有哪些可能不进行dispose的


我这里使用的串口的收发数据,数据接收后是采用委托的方式来对主线程控件进行更新,这样处理难道有问题?[/quote]
你确定你委托用对了吗,代码贴出来看看

[/quote]
大神,求指导!
XS_YOUYOU 2015-10-01
  • 打赏
  • 举报
回复
引用 9 楼 ajianchina 的回复:
是的,开始没问题,用上一会儿(有时几小时或者几天)就崩掉,绝大多数是内存溢出了。
我也感觉这样的,我发现我使用了Image.FromFile(),但是从来都没有对它释放,这样就导致了内存的泄露,应该是这样的吧!
圣殿骑士18 2015-10-01
  • 打赏
  • 举报
回复
引用 4 楼 XS_YOUYOU 的回复:
[quote=引用 2 楼 starfd 的回复:] 看你异常里面有Thread,你是不是跨线程操作主线程控件了?而且还是用的最粗暴的设置全局属性不检测是否跨线程操作控件?你得找哪些地方用了线程,然后看哪些会频繁更新控件,还有哪些可能不进行dispose的
我这里使用的串口的收发数据,数据接收后是采用委托的方式来对主线程控件进行更新,这样处理难道有问题?[/quote] 你确定你委托用对了吗,代码贴出来看看
XS_YOUYOU 2015-10-01
  • 打赏
  • 举报
回复
谢谢各位大神的指导,特别感谢本拉登大神帮我解决了问题
ajianchina 2015-09-30
  • 打赏
  • 举报
回复
是的,开始没问题,用上一会儿(有时几小时或者几天)就崩掉,绝大多数是内存溢出了。
本拉灯 2015-09-30
  • 打赏
  • 举报
回复
引用 7 楼 XS_YOUYOU 的回复:
[quote=引用 6 楼 wyd1520 的回复:] [quote=引用 5 楼 XS_YOUYOU 的回复:] [quote=引用 3 楼 wyd1520 的回复:] [quote=引用 2 楼 starfd 的回复:] 看你异常里面有Thread,你是不是跨线程操作主线程控件了?而且还是用的最粗暴的设置全局属性不检测是否跨线程操作控件?你得找哪些地方用了线程,然后看哪些会频繁更新控件,还有哪些可能不进行dispose的
你猜错了,他这情况多数是内存溢出了,这种情况多数是GDI+整出来的, 他肯定是用了读取图片资源,没有释放或读取的图片格式不正确造成的。[/quote] 我的确是读取图片资源,我只是在初始化load的时候才加载图片,然后将加载的图片显示出来或者切换显示(我加载的图片是gif动态图),我感觉这种操作应该是正确的,前45分钟到1个小时都不存在任何问题[/quote] 然后将加载的图片显示出来或者切换显示 关键是这个,你每切一次都是new 一次图片出来,前面一小时你感觉不出来, 你可以看任务管理器里面的内存,他会慢慢的增加上去,没有减下来,最后。。。就出现了你上面的情况了。 [/quote] 但是我试过就将界面停在某个地方不动,只显示当前的动态图,然后等上一个小时,还是会出现这个问题;[/quote] 就是这原因呀,你没有回收这动态图的内存,你上面的异常也是报这个。
XS_YOUYOU 2015-09-30
  • 打赏
  • 举报
回复
引用 6 楼 wyd1520 的回复:
[quote=引用 5 楼 XS_YOUYOU 的回复:] [quote=引用 3 楼 wyd1520 的回复:] [quote=引用 2 楼 starfd 的回复:] 看你异常里面有Thread,你是不是跨线程操作主线程控件了?而且还是用的最粗暴的设置全局属性不检测是否跨线程操作控件?你得找哪些地方用了线程,然后看哪些会频繁更新控件,还有哪些可能不进行dispose的
你猜错了,他这情况多数是内存溢出了,这种情况多数是GDI+整出来的, 他肯定是用了读取图片资源,没有释放或读取的图片格式不正确造成的。[/quote] 我的确是读取图片资源,我只是在初始化load的时候才加载图片,然后将加载的图片显示出来或者切换显示(我加载的图片是gif动态图),我感觉这种操作应该是正确的,前45分钟到1个小时都不存在任何问题[/quote] 然后将加载的图片显示出来或者切换显示 关键是这个,你每切一次都是new 一次图片出来,前面一小时你感觉不出来, 你可以看任务管理器里面的内存,他会慢慢的增加上去,没有减下来,最后。。。就出现了你上面的情况了。 [/quote] 但是我试过就将界面停在某个地方不动,只显示当前的动态图,然后等上一个小时,还是会出现这个问题;
本拉灯 2015-09-30
  • 打赏
  • 举报
回复
引用 5 楼 XS_YOUYOU 的回复:
[quote=引用 3 楼 wyd1520 的回复:] [quote=引用 2 楼 starfd 的回复:] 看你异常里面有Thread,你是不是跨线程操作主线程控件了?而且还是用的最粗暴的设置全局属性不检测是否跨线程操作控件?你得找哪些地方用了线程,然后看哪些会频繁更新控件,还有哪些可能不进行dispose的
你猜错了,他这情况多数是内存溢出了,这种情况多数是GDI+整出来的, 他肯定是用了读取图片资源,没有释放或读取的图片格式不正确造成的。[/quote] 我的确是读取图片资源,我只是在初始化load的时候才加载图片,然后将加载的图片显示出来或者切换显示(我加载的图片是gif动态图),我感觉这种操作应该是正确的,前45分钟到1个小时都不存在任何问题[/quote] 然后将加载的图片显示出来或者切换显示 关键是这个,你每切一次都是new 一次图片出来,前面一小时你感觉不出来, 你可以看任务管理器里面的内存,他会慢慢的增加上去,没有减下来,最后。。。就出现了你上面的情况了。
XS_YOUYOU 2015-09-30
  • 打赏
  • 举报
回复
引用 3 楼 wyd1520 的回复:
[quote=引用 2 楼 starfd 的回复:] 看你异常里面有Thread,你是不是跨线程操作主线程控件了?而且还是用的最粗暴的设置全局属性不检测是否跨线程操作控件?你得找哪些地方用了线程,然后看哪些会频繁更新控件,还有哪些可能不进行dispose的
你猜错了,他这情况多数是内存溢出了,这种情况多数是GDI+整出来的, 他肯定是用了读取图片资源,没有释放或读取的图片格式不正确造成的。[/quote] 我的确是读取图片资源,我只是在初始化load的时候才加载图片,然后将加载的图片显示出来或者切换显示(我加载的图片是gif动态图),我感觉这种操作应该是正确的,前45分钟到1个小时都不存在任何问题
XS_YOUYOU 2015-09-30
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
看你异常里面有Thread,你是不是跨线程操作主线程控件了?而且还是用的最粗暴的设置全局属性不检测是否跨线程操作控件?你得找哪些地方用了线程,然后看哪些会频繁更新控件,还有哪些可能不进行dispose的
我这里使用的串口的收发数据,数据接收后是采用委托的方式来对主线程控件进行更新,这样处理难道有问题?
本拉灯 2015-09-30
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
看你异常里面有Thread,你是不是跨线程操作主线程控件了?而且还是用的最粗暴的设置全局属性不检测是否跨线程操作控件?你得找哪些地方用了线程,然后看哪些会频繁更新控件,还有哪些可能不进行dispose的
你猜错了,他这情况多数是内存溢出了,这种情况多数是GDI+整出来的, 他肯定是用了读取图片资源,没有释放或读取的图片格式不正确造成的。
  • 打赏
  • 举报
回复
看你异常里面有Thread,你是不是跨线程操作主线程控件了?而且还是用的最粗暴的设置全局属性不检测是否跨线程操作控件?你得找哪些地方用了线程,然后看哪些会频繁更新控件,还有哪些可能不进行dispose的
XS_YOUYOU 2015-09-30
  • 打赏
  • 举报
回复
大神快点来,楼主再搞不定就要挨批

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧