资讯

精准传达 • 有效沟通

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

vb.net释放线程的简单介绍

VB.NET 多线程运行问题

多线程是用于处理复杂项目的

广饶网站建设公司成都创新互联公司,广饶网站设计制作,有大型网站制作公司丰富经验。已为广饶1000多家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的广饶做网站的公司定做!

打个比方

你的主程序线程A中有个循环,由于代码是一行行走的,所以循环结束前下面的代码无法运行,而此时主界面的反应就类似卡死的样子,你点击按钮也没有反应,因为主线程在忙着循环呢,所以对按钮的事件代码要等待了,如果要避免这种情况,就要用到多线程,另开一个新线程专门用来执行循环代码,主界面就不会卡死了,只要在循环结束后将结果传回主线程调用就可以了,再复杂点要涉及到委托,控制了

按你的要求其实你的代码用不到多线程,只要把sleep放到两段代码中间就可以了。

新线程结束用thread.abort()

vb.net怎么把对象真正的立即释放掉

.NET目前的垃圾回收机制不能实现把对象真正的立即释放掉,GC会对垃圾进行管理,如果垃圾没有引用计数了,就会被回收。

编码的时候能用托管类尽量用托管类去实现你的功能,

对于实现了IDisposable接口的类,用完了记得调用close或者Dispose又或者相应的方法去释放资源,最好吧使用using语句块;

对于Com对象,用完了先关闭,然后调用Runtime.InteropServices.Marshal.FinalReleaseComObject()方法把Com对象的引用计数设置为0。当 COM 对象的引用计数变为 0 时,通常会释放 COM 对象,不过这取决于 COM

对象的实现,而不是运行时可以控制的。最后调用ComObj = Nothing以释放ComObj持有的引用。不过要注意,只有当ComObj的生存期相对于垃圾回收器用于检测孤立对象的时间来说很长时,你才应该将变量设置为 Nothing。

有部分来自MSDN

VB.net 释放资源文件

你也遇到这样的问题,我也是刚解决,下面代码

我的文件在资源中类型为

array

Dim

resources

As

System.Resources.ResourceManager

=

My.Resources.ResourceManager

Dim

b()

As

Byte

=

resources.GetObject("psd文件在资源中的名称")

Dim

s

As

IO.Stream

=

File.Create(Filepath)'要保存的路径

s.Write(b,

0,

b.Length)

s.Close()

vb.net中如何结束一个线程

vb.net中如何结束一个线程

一般而言,如果您想终止一个线程,您可以使用System.Threading.Thread类的Abort方法. 例如:

Dim worker As ThreadStart = New ThreadStart(AddressOf workerthreadmethod)

Dim t As Thread = New Thread(worker)

t.Start()

MessageBox.Show("Wait for a while for the thread to start.")

MessageBox.Show(t.ThreadState.ToString())

t.Abort()

MessageBox.Show(t.ThreadState.ToString())

t.Join()

MessageBox.Show(t.ThreadState.ToString())

当然,在调用Abort方法后,线程并不是立刻终止,要等线程的所有finally快中的代码完成后才会完全终止. 所以在主线程中可以用Join方法来同步,当线程还未完全终止时,t.Join()将处于等待,直到t线程完全结束后再继续执行后面的语句。

Abort方法是会导致线程跳出一个异常错误的,你需要在代码中捕获该异常。下面是一个比较完整的VB.NET线程例子:

Imports System

Imports System.Threading

Public Class MyTestApp

Public Shared Sub Main()

Dim t As New Thread(New ThreadStart(AddressOf MyThreadMethod))

'Start the thread

t.Start()

MsgBox("Are you ready to kill the thread?")

'Kill the child thread and this will cause the thread raise an exception

t.Abort()

' Wait for the thread to exit

t.Join()

MsgBox("The secondary thread has terminated.")

End Sub

Shared Sub MyThreadMethod()

Dim i As Integer

Try

Do While True

Thread.CurrentThread.Sleep(1000)

Console.WriteLine("This is the secondary thread running.")

Loop

Catch e As ThreadAbortException

MsgBox("This thread is going to be terminated by the Abort method in the Main function")

End Try

End Sub

End Class

Thread.Abort()方法用来永久销毁一个线程,而且将抛出ThreadAbortException异常。使终结的线程可以捕获到异常但是很难控制恢复,仅有的办法是调用Thread.ResetAbort()来取消刚才的调用,而且只有当这个异常是由于被调用线程引起的异常。因此,A线程可以正确的使用Thread.Abort()方法作用于B线程,但是B线程却不能调用Thread.ResetAbort()来取消Thread.Abort()操作。

VB.NET程序如何巧妙释放内存

set xxx=nothing就是把对象占用的空间释放掉。 其他的局部变量都在栈内存,用完会自动释放的


文章标题:vb.net释放线程的简单介绍
转载来源:http://cdkjz.cn/article/hiegce.html
多年建站经验

多一份参考,总有益处

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

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

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220