资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

vb.net释放窗体的简单介绍

vb.net 关闭窗口 内存不能释放

1.如果你释放的是托管托管代码的内存,那么托管代码的内存管理是自动的,.NET可以保证我们的托管程序在结束时全部释放。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站制作、成都做网站、巴楚网络推广、微信平台小程序开发、巴楚网络营销、巴楚企业策划、巴楚品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供巴楚建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

2.如果是非托管资源时.NET就不能自动管理了,下面是释放非托管资源内存方法

当我们利用如数据库、文件等非托管资源时,就要用到.NET Framework中的标准: IDisposable接口。按照标准,所有有需要手动释放非托管资源的类都得实现此接口。这个接口只有一个方法,Dispose(),不过有相对的 Guidelines指示如何实现此接口,在这里我向大家说一说。实现IDisposable这个接口的类需要有这样的结构:

[Visual Basic]

Public Class Base

Implements IDisposable

Public Overloads Sub Dispose() Implements IDisposable.Dispose

Me.Dispose(True)

GC.SuppressFinalize(Me)

End Sub

Protected Overloads Overridable Sub Dispose(ByVal disposing As Boolean)

If disposing Then

' 托管类

End If

' 非托管资源释放

End Sub

Protected Overrides Sub Finalize()

Me.Dispose(False)

MyBase.Finalize()

End Sub

End Class

Public Class Derive

Inherits Base

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

If disposing Then

' 托管类

End If

' 非托管资源释放

MyBase.Dispose(disposing)

End Sub

End Class

我们要实现Dispose方法,实现这个Dispose方法的几个准则:

它不能扔出任何错误,重复的调用也不能扔出错误。也就是说,如果我已经调用了一个对象的Dispose,当我第二次调用Dispose的时候程序不应该出错,简单地说程序在第二次调用Dispose时不会做任何事。这些可以通过一个flag或多重if判断实现。

一个对象的Dispose要做到释放这个对象的所有资源。拿一个继承类为例,继承类中用到了非托管资源所以它实现了IDisposable接口,如果继承类的基类也用到了非托管资源那么基类也得被释放,基类的资源如何在继承类中释放呢?当然是通过一个virtual/Overridable方法了,这样我们能保证每个Dispose都被调用到。这就是为什么我们的设计有一个virtual/Overridable的Dispose方法。注意我们首先要释放继承类的资源然后再释放基类的资源。

因为非托管资源一定要被保障正确释放所以我们要定义一个Finalizer来避免程序员忘了调用Dispose的情况。上面的设计就采用了这种形式。如果我们手动调用Dispose方法就没有必要再保留Finalizer了,所以在Dispose中我们用了GC.SupressFinalize 将对象从Finalizer表去掉,这样再回收时速度会更快。

那么那个disposing和"托管类"是怎么回事呢?是这样:在"托管类"中写所有你想在调用Dispose时让其处于可释放状态的托管代码。还记得我们说过我们不知道托管代码是什么时候释放的吗?在这里我们只是去掉成员对象的引用让它处于可被回收状态,并不是直接释放内存。在"托管类"中这里我们也要写上所有实现了IDisposable的成员对象,因为他们也有Dispose,所以也需要在对象的Dispose中调用他们的 Dispose,这样才能保证第二个准则。disposing是为了区分Dispose的调用方法,如果我们手动调用那么为了第二个准则"托管类"部分当然得执行,但如果是Finalizer调用的Dispose,这时候对象已经没有任何引用,也就是说对象的成员自然也就不存在了(无引用),也就没有必要执行"托管类"部分了,因为他们已经处于可被回收状态了。好了,这就是IDisposable接口的全部了。现在让我们来回想一下,以前我们可能认为有了 Dispose内存就会马上被释放,这是错误的。只有非托管内存才会被马上释放,托管内存的释放由GC管理,我们不用管。

vb.net中怎么关闭现有窗口,然后打开另一个窗口?

登陆按钮里写:

private void button1_Click(object sender, EventArgs e)

{

Form2 fo1 = new Form2();

fo1.Show();

this.Visible=false;

}

第2个窗体的关闭事件里写

private void Form2_FormClosed(object sender, FormClosedEventArgs e)

{

Application.Exit();

}

这样就可以了

me.dispose(); 这个是释放本对象的资源,,有时候直接把这个对象就清理了,,登陆窗体如果是入口窗体的话,,这么写就等于Application.Exit();

直接关整个应用程序了

插红旗噢 我还去vs里敲了一下

VB.NET中关闭窗体代码,有的写me.close,有的只写end。请问,这两种代码,有何区别

me.close是关闭自身窗体,如果同时打开多个窗体,用me.close不能退出程序。

end是一个强大的退出指令,可以关闭所有窗体,并释放所有已占用的资源(当然有一些限制。所以自己主动释放是最好的)。

请问vb.net中如何实现窗体的清空

要在VB.NET中清屏已经不再是象是在VB6中那么简单使用一条Cls就能搞定的,因为现在的VB.NET已经是完全面向对象的语言了,方法就不能和以前那样了,下面给出清空窗体的源代码,通过单击按钮清空,如下:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim g As Graphics

g = Me.CreateGraphics

g.Clear(Me.BackColor)

g.Dispose()

'释放对象g所占用的资源

End Sub

OK,程序已经成功实现你要的功能,运行环境VS.NET2003+Windows 2003 Server

欢迎你加入群:30538950进行交流!

vb.net登陆界面中当login验证后进入main窗体时怎样关闭login窗体

您可以调用Me.Hide()方法隐藏Login窗体。

另外,如果您使用新建工程后的那个默认窗体作为Login窗体,那么您只能隐藏这个窗体或修改程序的启动对象。因为VB.net默认将创建工程时的那个默认窗体作为程序的主窗体,应用程序的主消息循环就建立在这个窗体上,如果您关闭这个窗体,那么所有的消息泵都会停止,应用程序就会退出。

我比较推荐您将Main窗体设为应用程序的主窗体,这样可以减小资源的占用,当Login完成后就可以释放Login窗体了。

另外,vb.net中的me变量相当于C语言中的this指针,它指向当前类。

推荐一个网站,这个网站有很多的教程,而且基本都是附部分代码,可能有一些对您有用的信息。


文章题目:vb.net释放窗体的简单介绍
网站链接:http://www.cdkjz.cn/article/hogpij.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220