网站建设资讯

NEWS

网站建设资讯

vb.net暂停线程 vbs暂停

求教VB.net多线程问题

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

专注于为中小企业提供网站设计制作、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业向阳免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

打个比方

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

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

新线程结束用thread.abort()

Vb.net问题 是这样,我写了一个坦克大战游戏,我想暂停,就用了Thread.sleep()方法

暂停,就是除恢复外所有操作都无效,你可以用一变量来控制,不需挂起。

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中我想实现“先暂停该程序,等其他程序运行完再继续执行该程序”的功能,请问怎么实现?

详细查看了你的问题,完全不需要使用线程sleep的方法。

在这边,我要给你引入一个概念。就是Form窗体的两个方法。

Form.Show()和Form.ShowDialog()

第一个Show方法运行后,你的主程序还是会进行,你的代码还是会继续进行下去。此时,窗体还是弹出的。

第二个ShowDialog方法运行后,此时,弹出的一个窗体,你不将其关闭,那么,主程序就会一直等待这个窗体关闭后,才执行后面的代码。

所以,你只需要使用showdialog这个方法,即可达到你想要的结果。

那么,如何才能让弹出的窗体不改变呢?很简单

你可以找到窗体的formcloseing事件,在这个事件中,有一个参数:e

这个e有一个属性,就是e.handle,表示是否处理过这个事件了。

这个时候,如果你不想让窗体关闭,你可以写:

e.handle=true,那么表示已经处理过窗体关闭的事件了。

注:有些情况,可能是:e.cancel=true


文章名称:vb.net暂停线程 vbs暂停
路径分享:http://cdweb.net/article/dophgjd.html