以下方法将位图的副本分配给类中的本地位图变量。 为了方便起见,第二个参数指示在分配后是否要处理源位图。

Public Sub setBitmap(ByRef SourceBitmap As Bitmap, DisposeSource As Boolean)
uBitmap = SourceBitmap.Clone
If DisposeSource AndAlso SourceBitmap IsNot Nothing Then
  SourceBitmap.Dispose()
  SourceBitmap = Nothing
  end if
End Sub

源位图是新位图时是否应该将其丢弃? 换句话说,在此示例中,第二个参数应为True还是False?

mView.setBitmap(New Bitmap(2000, 2000, pFormat), False)

从其他函数返回的新位图怎么样?

rview.setBitmap(readThumbnail(...), False)

===============>>#1 票数:5

处置调用者的对象通常是错误的形式。 就个人而言,我将完全删除该功能。 这会更正确:

using newBitmap As New Bitmap(2000, 2000, pFormat)
    mView.setBitmap(newBitmap)
end using

===============>>#2 票数:2 已采纳

在调用中创建新的位图时,应使该方法将其处置:

mView.setBitmap(New Bitmap(2000, 2000, pFormat), True)

您创建的每个一次性对象都应进行处置,并且由于您不保留对其的引用,因此处置该对象的唯一机会就是使该方法完成。

如果使用一种方法来创建位图,也是如此。 如果没有保留对它的引用以便可以对其进行处理,则该方法必须这样做。

如果创建位图并保留对其的引用以便以后处理,则可以将False发送为第二个参数:

Dim img As New Bitmap(2000, 2000, pFormat)
mView.setBitmap(img, False)
' ...
img.Dispose()

通常,您将使用发送False的形式作为第二个参数。 如果创建对象的级别也负责处理它,则遵循代码会更容易。 确保其正常工作的代码也可以编写得更简单(例如,使用Using关键字来确保放置对象)。

  ask by xpda translate from so

未解决问题?本站智能推荐:

3回复

在DataGridView中编辑单元格后,我应该在哪个事件后执行操作?

我在窗体上有一个WinForms DataGridView控件。 此DataGridControl中有两个字段: Email Address Resolved Email Address (根据Email Address的输入计算) 用户输入或更改Email Addr
2回复

您是否必须在VB.NET中显式创建表单实例? [重复]

这个问题在这里已有答案: 为什么VB.Net中的每个表单都有默认实例,而C#中没有? 2个答案 如果项目包含Form类,则表单可以通过以下方式显示: 或者是否需要首先创建表单的实例?
1回复

对象的实例化,其类型作为参数传递

我有一个必须实例化Form的事件: 但是我在这一行有一个错误: 错误是Type TypeOfFrmEtablissement is not defined 所以我需要知道: 此错误的原因是什么? 我该如何解决?
2回复

有没有一种方法可以轻松地遮罩Inputbox对象

在我的WinForms项目中,我弹出2个输入框,要求用户输入用户名和密码,我想屏蔽密码输入框上的文本输入。 当前的代码看起来像这样: 我想知道是否有一种方法可以掩盖输入框上的文本,或者是否可以在.Net中使用另一个预定义对象而无需使用掩盖的文本框创建自己的用户窗体? (我知道这很
1回复

分配为方法参数,如何在VB.NET中做到这一点?

我正在将应用程序转换为VB.Net,但我不知道如何将下面的行转换为VB.Net。 此应用程序引用了Sharepoint,因此该对象引用了Sharepoint组件。 有什么建议如何将其转换为vb.net吗?
1回复

将正常的ProgressBar放置到ToolStripProgressBar的确切位置

在C#或VBNET中如何在运行时将正常的ProgressBar控件(或第三方ProgressBar)放置到statusstrip中ToolStripProgressBar的确切位置? 我试过这个,但正常的进度条移动到左上角,我的statusstrip在底部...: 而其他事情也发生
4回复

我何时应该谨慎使用.NET中的数据绑定?

我大约一个月前刚刚开始研究.NET程序员的一个小团队,最近我们与团队领导讨论了为什么我们的代码中根本不使用数据绑定。 每次我们使用数据网格时,我们遍历数据表并逐行填充网格; 代码通常看起来像这样: 我们的团队负责人说,在九十年代使用Sheridan Grid控件,VB6和ADO记录集
1回复

应该只从.NET UI主线程调用SaveSetting和GetSetting吗?

表单类中的线程调用SaveSetting和GetSetting是否线程安全? 还是应该仅由MAIN UI线程调用这些? 我的应用程序以编程方式实例化了8个窗口(即Windows窗体),并启动了8个线程,每个线程负责更新其中一个窗口上的图形。 这些线程的代码在我与设计人员创建的所说窗口形
2回复

将文本框的内容打印为新格式的标签

我正在制作一个硬币评分程序,我希望当我按下一个按钮时,该按钮会将文本框的内容打印到我已经创建的名为form2的新表单中,形式为标签。 所以基本上,我想将文本框的内容打印到另一个名为表单2的表单中。当它们打印到表单中时,我希望每次输入新数据时都将它们打印到新行。 我已经查看了StreamR
1回复

保存新表单中的用户选择

我将生成一个包含3个可能主题的PDF,因此我需要向用户显示一个带有3个单选按钮的表单来选择一个。 在我的Form1上 随着线 我叫这个功能 Form ChooseTheme()是一个带有3个单选按钮和一个带有此代码的cmd按钮: 但我不能让它发挥作用。 我很