真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

包含vb.net窗體釋放的詞條

vb.net怎么把對(duì)象真正的立即釋放掉

.NET目前的垃圾回收機(jī)制不能實(shí)現(xiàn)把對(duì)象真正的立即釋放掉,GC會(huì)對(duì)垃圾進(jìn)行管理,如果垃圾沒(méi)有引用計(jì)數(shù)了,就會(huì)被回收。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的高青網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

編碼的時(shí)候能用托管類(lèi)盡量用托管類(lèi)去實(shí)現(xiàn)你的功能,

對(duì)于實(shí)現(xiàn)了IDisposable接口的類(lèi),用完了記得調(diào)用close或者Dispose又或者相應(yīng)的方法去釋放資源,最好吧使用using語(yǔ)句塊;

對(duì)于Com對(duì)象,用完了先關(guān)閉,然后調(diào)用Runtime.InteropServices.Marshal.FinalReleaseComObject()方法把Com對(duì)象的引用計(jì)數(shù)設(shè)置為0。當(dāng) COM 對(duì)象的引用計(jì)數(shù)變?yōu)?0 時(shí),通常會(huì)釋放 COM 對(duì)象,不過(guò)這取決于 COM

對(duì)象的實(shí)現(xiàn),而不是運(yùn)行時(shí)可以控制的。最后調(diào)用ComObj = Nothing以釋放ComObj持有的引用。不過(guò)要注意,只有當(dāng)ComObj的生存期相對(duì)于垃圾回收器用于檢測(cè)孤立對(duì)象的時(shí)間來(lái)說(shuō)很長(zhǎng)時(shí),你才應(yīng)該將變量設(shè)置為 Nothing。

有部分來(lái)自MSDN

請(qǐng)問(wèn)vb.net中如何實(shí)現(xiàn)窗體的清空

要在VB.NET中清屏已經(jīng)不再是象是在VB6中那么簡(jiǎn)單使用一條Cls就能搞定的,因?yàn)楝F(xiàn)在的VB.NET已經(jīng)是完全面向?qū)ο蟮恼Z(yǔ)言了,方法就不能和以前那樣了,下面給出清空窗體的源代碼,通過(guò)單擊按鈕清空,如下:

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()

'釋放對(duì)象g所占用的資源

End Sub

OK,程序已經(jīng)成功實(shí)現(xiàn)你要的功能,運(yùn)行環(huán)境VS.NET2003+Windows 2003 Server

歡迎你加入群:30538950進(jìn)行交流!

VB.NET中關(guān)閉窗體代碼,有的寫(xiě)me.close,有的只寫(xiě)end。請(qǐng)問(wèn),這兩種代碼,有何區(qū)別

me.close是關(guān)閉自身窗體,如果同時(shí)打開(kāi)多個(gè)窗體,用me.close不能退出程序。

end是一個(gè)強(qiáng)大的退出指令,可以關(guān)閉所有窗體,并釋放所有已占用的資源(當(dāng)然有一些限制。所以自己主動(dòng)釋放是最好的)。

vb.net退出這個(gè)form窗口怎么同時(shí)取消對(duì)圖片的占用?

只需要用變量存儲(chǔ) Image 對(duì)象,然后不需要的時(shí)候釋放掉就行了。

Dim img1 As Image

img1 = Image.FromFile(pic)

PictureBox1.Image = img1

'窗口關(guān)閉時(shí)

img1 = Nothing

如滿意,請(qǐng)采納。

vb.net 關(guān)閉窗口 內(nèi)存不能釋放

1.如果你釋放的是托管托管代碼的內(nèi)存,那么托管代碼的內(nèi)存管理是自動(dòng)的,.NET可以保證我們的托管程序在結(jié)束時(shí)全部釋放。

2.如果是非托管資源時(shí).NET就不能自動(dòng)管理了,下面是釋放非托管資源內(nèi)存方法

當(dāng)我們利用如數(shù)據(jù)庫(kù)、文件等非托管資源時(shí),就要用到.NET Framework中的標(biāo)準(zhǔn): IDisposable接口。按照標(biāo)準(zhǔn),所有有需要手動(dòng)釋放非托管資源的類(lèi)都得實(shí)現(xiàn)此接口。這個(gè)接口只有一個(gè)方法,Dispose(),不過(guò)有相對(duì)的 Guidelines指示如何實(shí)現(xiàn)此接口,在這里我向大家說(shuō)一說(shuō)。實(shí)現(xiàn)IDisposable這個(gè)接口的類(lèi)需要有這樣的結(jié)構(gòu):

[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

' 托管類(lèi)

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

' 托管類(lèi)

End If

' 非托管資源釋放

MyBase.Dispose(disposing)

End Sub

End Class

我們要實(shí)現(xiàn)Dispose方法,實(shí)現(xiàn)這個(gè)Dispose方法的幾個(gè)準(zhǔn)則:

它不能扔出任何錯(cuò)誤,重復(fù)的調(diào)用也不能扔出錯(cuò)誤。也就是說(shuō),如果我已經(jīng)調(diào)用了一個(gè)對(duì)象的Dispose,當(dāng)我第二次調(diào)用Dispose的時(shí)候程序不應(yīng)該出錯(cuò),簡(jiǎn)單地說(shuō)程序在第二次調(diào)用Dispose時(shí)不會(huì)做任何事。這些可以通過(guò)一個(gè)flag或多重if判斷實(shí)現(xiàn)。

一個(gè)對(duì)象的Dispose要做到釋放這個(gè)對(duì)象的所有資源。拿一個(gè)繼承類(lèi)為例,繼承類(lèi)中用到了非托管資源所以它實(shí)現(xiàn)了IDisposable接口,如果繼承類(lèi)的基類(lèi)也用到了非托管資源那么基類(lèi)也得被釋放,基類(lèi)的資源如何在繼承類(lèi)中釋放呢?當(dāng)然是通過(guò)一個(gè)virtual/Overridable方法了,這樣我們能保證每個(gè)Dispose都被調(diào)用到。這就是為什么我們的設(shè)計(jì)有一個(gè)virtual/Overridable的Dispose方法。注意我們首先要釋放繼承類(lèi)的資源然后再釋放基類(lèi)的資源。

因?yàn)榉峭泄苜Y源一定要被保障正確釋放所以我們要定義一個(gè)Finalizer來(lái)避免程序員忘了調(diào)用Dispose的情況。上面的設(shè)計(jì)就采用了這種形式。如果我們手動(dòng)調(diào)用Dispose方法就沒(méi)有必要再保留Finalizer了,所以在Dispose中我們用了GC.SupressFinalize 將對(duì)象從Finalizer表去掉,這樣再回收時(shí)速度會(huì)更快。

那么那個(gè)disposing和"托管類(lèi)"是怎么回事呢?是這樣:在"托管類(lèi)"中寫(xiě)所有你想在調(diào)用Dispose時(shí)讓其處于可釋放狀態(tài)的托管代碼。還記得我們說(shuō)過(guò)我們不知道托管代碼是什么時(shí)候釋放的嗎?在這里我們只是去掉成員對(duì)象的引用讓它處于可被回收狀態(tài),并不是直接釋放內(nèi)存。在"托管類(lèi)"中這里我們也要寫(xiě)上所有實(shí)現(xiàn)了IDisposable的成員對(duì)象,因?yàn)樗麄円灿蠨ispose,所以也需要在對(duì)象的Dispose中調(diào)用他們的 Dispose,這樣才能保證第二個(gè)準(zhǔn)則。disposing是為了區(qū)分Dispose的調(diào)用方法,如果我們手動(dòng)調(diào)用那么為了第二個(gè)準(zhǔn)則"托管類(lèi)"部分當(dāng)然得執(zhí)行,但如果是Finalizer調(diào)用的Dispose,這時(shí)候?qū)ο笠呀?jīng)沒(méi)有任何引用,也就是說(shuō)對(duì)象的成員自然也就不存在了(無(wú)引用),也就沒(méi)有必要執(zhí)行"托管類(lèi)"部分了,因?yàn)樗麄円呀?jīng)處于可被回收狀態(tài)了。好了,這就是IDisposable接口的全部了。現(xiàn)在讓我們來(lái)回想一下,以前我們可能認(rèn)為有了 Dispose內(nèi)存就會(huì)馬上被釋放,這是錯(cuò)誤的。只有非托管內(nèi)存才會(huì)被馬上釋放,托管內(nèi)存的釋放由GC管理,我們不用管。

vb.net登陸界面中當(dāng)login驗(yàn)證后進(jìn)入main窗體時(shí)怎樣關(guān)閉login窗體

您可以調(diào)用Me.Hide()方法隱藏Login窗體。

另外,如果您使用新建工程后的那個(gè)默認(rèn)窗體作為L(zhǎng)ogin窗體,那么您只能隱藏這個(gè)窗體或修改程序的啟動(dòng)對(duì)象。因?yàn)閂B.net默認(rèn)將創(chuàng)建工程時(shí)的那個(gè)默認(rèn)窗體作為程序的主窗體,應(yīng)用程序的主消息循環(huán)就建立在這個(gè)窗體上,如果您關(guān)閉這個(gè)窗體,那么所有的消息泵都會(huì)停止,應(yīng)用程序就會(huì)退出。

我比較推薦您將Main窗體設(shè)為應(yīng)用程序的主窗體,這樣可以減小資源的占用,當(dāng)Login完成后就可以釋放Login窗體了。

另外,vb.net中的me變量相當(dāng)于C語(yǔ)言中的this指針,它指向當(dāng)前類(lèi)。

推薦一個(gè)網(wǎng)站,這個(gè)網(wǎng)站有很多的教程,而且基本都是附部分代碼,可能有一些對(duì)您有用的信息。


分享題目:包含vb.net窗體釋放的詞條
轉(zhuǎn)載來(lái)于:http://weahome.cn/article/hdjssc.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部