VBNET线程和委托20191223

时间:2019-12-23
本文章向大家介绍VBNET线程和委托20191223,主要包括VBNET线程和委托20191223使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1、每个程序有一个主线程,如果一个循环处于主线程中,程序在较长的循环,将出现“不响应”的情况。

     线程在System.Threading中。线程创建可专用于一个功能块(方法、函数), 线程的开始用Start方法,线程的结束用Abort方法,线程的暂停使用Sleep方法

2、委托的思想,就是自己不能干或不想干的事,委托另一个有能力或有权限的人去干那件事。

     实际上,我们一直要用委托思想,比如基本类型的变量名。Dim  i  As  Integer

     除了变量名可以用委托一样,方法(sub)也可以用委托,这就是我们普通所说的委托。

     定义和使用大致与变量名的方式一样:

    (1)定义委托类型:  Private Delegate Sub   VoidShow(ByRef i As Int32)     '参数多种,多个)

    (2)定义要赋的具体“值”(要做的事情和方法):  这里的具体值,不是值,而是一个具体的方法,方法的形式必须与上面定义保持一致。就象变量名是整形时,赋值也应该是整形,而不是String.  例如:Private Sub TureShowNumber(ByRef i As Int32)  '方法名自定,但形式与(1)保持一致

    (3)调用这个值: 也就是委托去办事。用Invoke方法:Control.Invoke(New  MyDelegate(AddressOf TureShowNumber),  intValue)

Imports System.Threading

Public Class Form1


    Dim mythread As Thread
    Private Delegate Sub VoidShow(ByRef i As Int32) '定义要委托的类型


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        mythread = New Thread(AddressOf ShowNumber) '构造线程
        mythread.Name = "myShowNumber"
        mythread.Start() '启动线程
        mythread.Sleep(5000) '启动线程
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        TextBox2.Text = "终于出现奇迹"
    End Sub



    Private Sub ShowNumber()
        Dim i As Int32
        For i = 0 To 123451
            ' TextBox1.Text = i
            Me.Invoke(New VoidShow(AddressOf TureShowNumber), i) '用New构造委托,再用Invoke执行
        Next

        mythread.Abort() '终止线程
    End Sub

    Private Sub TureShowNumber(ByRef i As Int32)    '新加入的被委托要做的事
        TextBox1.Text = i
    End Sub



End Class



原文地址:https://www.cnblogs.com/icaowu/p/12084494.html