vb.net异步委托执行任务等待窗口支持取消,防窗口假死

  • A+
所属分类:vb.net

废话不多说,代码我也不是很懂,也是在学习中,

打开vs软件,新建项目,在项目里面 新建两个窗体,一个是主窗体,一个是任务等待窗体,

在新建一个公共模块,(在里面申明中断的参数)

A、主窗口上绘制一个RichTextBox1控件,TextBox1,Button1

RichTextBox1,显示结果

TextBox1,效果事件次数

Button1,开始执行

主窗口代码:

Public Class Form1
    'http://huojibk.com/
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim wait As New Form2
        wait._wtVoid = New Form2.WTVoid(AddressOf UI) '不支持带参函数
        wait.ShowDialog()
    End Sub
    Private Sub UI() '转换一下
        xh(TextBox1.Text)
    End Sub
    Private Sub xh(ByVal ce As Integer)
        Dim i As Integer
        For i = 1 To ce
            'Console.WriteLine(i)
            RichTextBox1.Text = RichTextBox1.Text & "A伙计百科-" & i & vbCrLf
            Me.Text = "A伙计百科-" & i
            If ting = True Then
                Exit For
            End If
        Next
    End Sub
End Class

/code]

B、准备一个动态图片,最好透明。窗口绘制PictureBox1,LinkLabel1

PictureBox1,加载动态图片

LinkLabel1,停止按钮

窗口具体代码

[code id=2]

Imports System.Threading

Public Class Form2

Public Delegate Sub WTVoid()
Public _wtVoid As WTVoid

Dim th As Threading.Thread
Delegate Sub wt() '定义委托 http://huojibk.com/

Private Sub form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Control.CheckForIllegalCrossThreadCalls = False
'窗体位置
Me.Left = (Form1.Width - Me.Width) / 2 + Form1.Left
Me.Top = (Form1.Height - Me.Height) / 2 + Form1.Top
th = New Threading.Thread(AddressOf wwtt)
th.Start()

End Sub

'执行委托
Public Sub wwtt()
If Not _wtVoid = Nothing Then
_wtVoid()
End If
Me.DialogResult = Windows.Forms.DialogResult.OK '关闭等待对话框
End Sub

Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
If MsgBox("确定要休息?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
ting = True
End If

End Sub
End Class

复制

C、模块代码

Module Module1
Public ting As String = False
End Module

复制

测试结果

vb.net异步委托执行任务等待窗口支持取消,防窗口假死

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: