2哥学Vb.net--关于线程

2哥学Vb.net--关于线程,第1张

概述最近在努力学习vb.net,今天刚好看到一篇关于讲解多线程的文章,不知道自己理解的对不对,写了以下程序: 前置条件:点击button1,会打开计算器,同时检查F:\1.log 是否存在,如果存在就关掉计算器,                       点击button2,创建1.log 现在,先点击button1,再点击button2 代码如下: Imports System.Threading 最近在努力学习vb.net,今天刚好看到一篇关于讲解多线程的文章,不知道自己理解的对不对,写了以下程序: 前置条件:点击button1,会打开计算器,同时检查F:\1.log 是否存在,如果存在就关掉计算器, 点击button2,创建1.log 现在,先点击button1,再点击button2 代码如下:

imports System.Threading
Public Class Form1
'===========================方法1=========================================
Public Sub New()
InitializeComponent()

'Control.CheckForIllegalCrossthreadCalls = False '将其设置为true(默认为真),在me.close 处会报错,'设置为False,但是还是会抛出异常。

End Sub
'===========================方法1=========================================

Private firstThread As Thread

Private Sub button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles button1.Click
'启动calc
Dim myProcess As Process = System.Diagnostics.Process.Start("calc.exe")
'创建新线程
firstThread = New Thread(AddressOf xx)
firstThread.Start()
End Sub


Private Sub button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles button2.Click
writLog("xxx")
End Sub

Public Sub writLog(ByVal strParemeter)
My.Computer.fileSystem.WriteallText("F:\1.log",strParemeter,True,System.Text.EnCoding.UTF8)
End Sub

Public Sub xx()
Try
do while 1
If My.Computer.fileSystem.fileExists("F:\1.log") Then
Thread.Sleep(1000)
'找到进程calc,并关掉
Dim findProcess As Process() = Process.GetProcessesByname("calc")
findProcess(0).Kill()

'关掉firstThread线程
'firstThread.Abort() '方法1
StartDelegate() '方法2
Exit Do
End If
Loop
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
'Me.Close '方法1
End Try
End Sub

'===========================方法2=========================================
Private Delegate Sub TestDelegate() ’这个方法本人还不是很懂,委托(不需要参数,没有返回值) 下阶段学习对象

Private Sub DelegateMethod()
firstThread.Abort()
Me.Close()
End Sub

Private Sub StartDelegate()
Me.BeginInvoke(New TestDelegate(AddressOf DelegateMethod))
End Sub
'===========================方法1=========================================
End Class

线程的相关的些知识: 线程取消:CancelTask() 线程的优先级:System.Threading.Thread.Priority 线程的状态:线程从创建到终止,它一定处于某一个状态,而这个状态是由System.Threading.Thread.ThreadState属性定义的。当一个线程刚被创建时,它处在Unstarted状态,然后Thread类的Start() 方法将使线程状态变为Running状态,如果不调用相应的方法使线程挂起、阻塞、销毁或者终止,则线程将一直保持这样的状态。挂起的线程处于Suspended状态,直到我们调用resume()方法使其重新执行,这时候线程将重新变为Running状态。一旦线程被销毁或者终止,则线程处于Stopped状态,处于这个状态的线程将不复存在。线程还有一个Background状态,它表明线程运行在前台还是后台。 此外还有线程池,线程的同步等等。。。。。有待研究 总结

以上是内存溢出为你收集整理的2哥学Vb.net--关于线程全部内容,希望文章能够帮你解决2哥学Vb.net--关于线程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1280088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存