当前位置:  开发笔记 > 编程语言 > 正文

unlockbits,lockbits和try-finally

如何解决《unlockbits,lockbits和try-finally》经验,为你挑选了1个好方法。

我正在调用一些使用.NET的BitmapData类的代码.我找到了一些我无法在Googlespace上找到明确答案的东西.

因为似乎必须始终在一对中调用LockBits和UnlockBits,所以我使用它:

         System.Drawing.Imaging.BitmapData tempImageData = tempImage.LockBits(
            new System.Drawing.Rectangle(0, 0, tempImage.Width, tempImage.Height),
            System.Drawing.Imaging.ImageLockMode.ReadOnly, tempImage.PixelFormat);
         try
         {
            //use external library on the data
         }//Exception not handled here; throw to calling method
         finally
         {
            tempImage.UnlockBits(tempImageData);
         }

(我最近一直在使用using语句,这在C#中非常有用,这让我觉得我应该这样做.)麻烦的是,即使是MS自己的文档(http://msdn.microsoft.com/ en-us/library/system.drawing.bitmap.unlockbits.aspx)认为它不适合使用try-finally模式.

尝试 - 最后是必要的还是无偿的?

更新:我可能最终会捕获并重新抛出异常,因为我不知道它可能是什么,并且没有提前捕获它们.

谢谢!



1> 小智..:

try-finally模式是正确的.由于这是外部代码,因此您无法控制抛出的异常,并且无论发生了什么错误,都需要执行UnlockBits清理代码.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有