包含vb.net释放资源文件的词条

vb.net 关闭窗口 内存不能释放1.如果你释放的是托管托管代码的内存,那么托管代码的内存管理是自动的,.NET可以保证我们的托管程序在结束时全部释放 。
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 怎么把资源文件里面的.swf 读出来并放到 AxShockwaveFlash控件里面播放?要测试过的代码首先将swf文件添加进资源vb.net释放资源文件 , 方法vb.net释放资源文件:
假设资源文件是workergame.swf(你按照自己的改),将其释放到临时文件,供AxShockwaveFlash控件播放,完整代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim size As Long = My.Resources.workergame.Length - 1
Dim buffer(CInt(size)) As Byte
buffer = My.Resources.workergame.ToArray
Dim fn As String = IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Temp, "workergame.swf")
Dim fs As New IO.FileStream(fn, IO.FileMode.Create)
fs.Write(buffer, 0, buffer.Length)
fs.Close()
AxShockwaveFlash1.Movie = fn
End Sub
vb.net如何释放资源到指定的目录?释放文件可以使用 Resources对象 和 IO对象
下面以文件在资源中类型为 array 的实例代码
注意引用 imports system.io
Dim resources As System.Resources.ResourceManager = My.Resources.ResourceManager
Dim b() As Byte = resources.GetObject("文件在资源中的名称")
Dim s As IO.Stream = File.Create(Filepath)'要保存的路径
s.Write(b, 0, b.Length)
s.Close()
VB.NET释放资源文件的办法?Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim path As String = "C:\Data.mdb" '文件释放路径
Dim resources As System.Resources.ResourceManager = My.Resources.ResourceManager
Dim b() As Byte = resources.GetObject("Data")
Dim s As IO.Stream
Try
s = IO.File.Create(path)
s.Write(b, 0, b.Length)
s.Close()
MessageBox.Show("资源释放成功")
Catch ex As Exception
MessageBox.Show("资源释放失败vb.net释放资源文件!Result="ex.Message)
End Try
End Sub
求大神指点vb.net 怎么释放资源里面的压缩包 rar呢1、vb.net释放资源文件你先搞懂winrar.exevb.net释放资源文件的解压参数格式vb.net释放资源文件 , 然后把winrar.exe和相关文件加入到资源文件中vb.net释放资源文件,然后调用 资源文件中vb.net释放资源文件的winrar.exe
2、弄明白rar/zip文件解压/压缩方法和格式,自己写程序(可能会比较麻烦)
vb.net引用Dll的问题上级目录不可以vb.net释放资源文件 , 但是为了保证程序路径改变vb.net释放资源文件,引用不会被破坏 。可以有几个方法vb.net释放资源文件:
1.将DLL文件放在程序同级目录
2.将DLL文件放在程序子目录
3.将DLL文件放在System32目录下(系统目录vb.net释放资源文件,可以直接引用DLL)
4.可以将DLL文件打包成资源文件,融合到EXE程序中,每次执行判断同级目录是否有DLL文件,不存在,释放资源文件 。
【包含vb.net释放资源文件的词条】关于vb.net释放资源文件和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读