2015-10-06 49 views
-2

我有一个功能,有一个图像作为输入。应该C#锁定图像始终解锁

由于我的计算取决于几个像素,我不能直接在这个锁定的输入图像上工作,所以我使用了另一个结果图像,也锁定了更快的位图访问。

在我的功能结束时,我解锁这两个图像。

//... 
    //.. 
    LockedInput.UnlockBits(); 
    LockedResult.UnlockBits(); // its the image "Result" locked. 
return Result; 
} 

我在想什么,因为输入图像没有被这个函数返回;我还应该解锁吗?我不确定它是否已经被c#垃圾收集发布。如果我标记LockedInput.UnlockBits(),该程序不会连接挂起。但是,我不确定是否可以这样做。

回答

1

“锁定位”意味着对象无法为批量访问安排位/像素,但必须针对各个像素访问保持其优化。既然你不再关心像素,你也不关心它们的表示。而.Net不会安排这些像素,因为它可以简单地丢弃所有这些像素。所以,解锁是没有必要的。