首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

多线程与GDI对象释放的有关问题

2012-02-21 
多线程与GDI对象释放的问题我在另一线程中,动态生成一个TBitmap对其操作,tmpBMP:TBitmap:TBitmap.Create

多线程与GDI对象释放的问题
我在另一线程中,动态生成一个TBitmap
对其操作,
    tmpBMP:   TBitmap   :=   TBitmap.Create;
    .....
    tmpBMP.free;
    tmpBMP   :=   nil;

为什么最后GDI对象越来越多,是不是没得到释放


[解决办法]
操作过程中可能没有释放吧。。把代码贴出来看看。。
[解决办法]
把主要代码帖出来,要不无法知道是哪里的问题。。。
[解决办法]
我也有这种问题,怎么看 GDI对象越来越多?
[解决办法]
这点代码真是看不出什么问题。
[解决办法]
怎么看 GDI对象越来越多?在进程管理器中就有啊!

tmpBMP: TBitmap := TBitmap.Create;
.....//可能问题在这里//
tmpBMP.free;
tmpBMP := nil;
[解决办法]
你自己设定一个线程OnTerminate事件,在事件里释放一些资源,那当线程结束以后就会执行,释放这些资源。
[解决办法]
GDI对象主要是指Tcanvas对象的实力,你需要考虑的是是不是你在什么地方建立的TCANVAS的对象实力而没有释放。

[解决办法]
我的错误出在 BMP.SaveToStream 这一句上, Create,Free Canvas都没有问题。使用的是 TMemoryStream
[解决办法]
是不是会有多线程同步的问题.你多个线程如果用的是同一个BITMAP最好你做个锁保护下.
[解决办法]
tmpBMP: TBitmap := TBitmap.Create;
.....
tmpBMP.free;
tmpBMP := nil;
这些代码放在进程外面,里面只是调用就行了

[解决办法]
tmpBMP: TBitmap := TBitmap.Create;
try
.....
finally
tmpBMP.free;
tmpBMP := nil;
end;

这样可以保证即使中间的操作出现异常还可以正确释放资源

[解决办法]
不一定是泄漏了,delphi里面好些具有相同属性的gdi资源都是共享的,使用引用计数来管理,所以,当其他对象使用了相同属性的gdi资源时,即使你这边释放,也不会减少gdi句并的总数。
[解决办法]
可否发代码出来看看
[解决办法]
我的问题是,我用任务管理器看了,GDI并没有增多。
[解决办法]
还是把抓屏代码放主线程里了。
[解决办法]
放到主线程里没有任何问题。

热点排行