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() '启动线程
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 = To
' 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

VBNET线程和委托20191223的更多相关文章

  1. C# 控件线程匿名委托定义

    当你在子线程中要修改主线程某个控件的值时,有不想再去定义一个线程变量时,就可以直接使用线程匿名委托来实现. 主要是方便快捷 控件.BeginInvoke(new ThreadStart(delegat ...

  2. winform总结6=>线程和委托的关系

    基础类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...

  3. C#创建子线程,子线程使用委托更新控件

    一.背景 由于在窗体程序中通过点击一个button按键后需要更新TreeView控件的内容,由于等待时间比较长,主程序无法一起在那边等待,需要去处理其它的事情,所以就需要创建新的子线程来处理.因为主线 ...

  4. 线程、委托、lambda运算符的简单示例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. c#线程之异步委托begininvoke、invoke、AsyncWaitHandle.WaitOne 、异步回调

    单靠自己看书学总是会走很多弯路,任何人也不列外,有些时候自己遇到的很多问题,其它别人在很久之前也可能遇到过,上网查查可以走很大捷径,对自己的学习有很大帮助,刚开始弄线程这块,一开始只是看书,很多东西都 ...

  6. C#利用委托跨线程更新UI数据

    转:http://www.2cto.com/kf/201206/136587.html 在使用C#的过程中,难免会用到多线程,而用多线程之后,线程如何与界面交互则是一个非常头疼的问题.其实不仅仅是界面 ...

  7. C#委托、事件、线程

    这是几个简单的例子,但是实际的开发中委托还还只在反射时用到过,事件的话只自己做了一次,并且还是特意去用的 ,实际上可以不用.线程的话,因为需要,所以用的会多点,这里主要是WS上的线程. 委托 在前面的 ...

  8. 本周博客--WinForm线程初步 2014-10-31 09:15 54人阅读 评论(0) 收藏

    嗯,WinForm作为一个比较程序的微软的技术已经为我们服务了很久很久,在技术不断更新的今天WinForm虽显老态龙钟但是在客户端快速开发中,它的地位还是无可取代的 今天就来分享一下WinForm中的 ...

  9. c#线程间操作UI-Invoke和BeginInvoke

    利用Invoke和或BeginInvoke实现线程间操作UI的简单例子. /* 窗体包含一个button和一个richtextbox控件 * 注:必须在子线程中执行Invoke和或BeginInvok ...

随机推荐

  1. css3常用动画大全:translate、scale、opacity、rotate (转)

    /* animation */ .a-bounce,.a-flip,.a-flash,.a-shake,.a-swing,.a-wobble,.a-ring{-webkit-animation:1s ...

  2. 4、路由事件 RoutedEvent

    路由事件的类型:具体参考https://www.cnblogs.com/jellochen/p/3475754.html Tunnel隧道方式:路由事件使用隧道策略,以便事件实例通过树向下路由(从根到 ...

  3. Comet OJ - Contest #10 鱼跃龙门 exgcd+推导

    考试的时候推出来了,但是忘了 $exgcd$ 咋求,成功爆蛋~ 这里给出一个求最小正整数解的模板: ll solve(ll A,ll B,ll C) { ll x,y,g,b,ans; gcd = e ...

  4. LCA离线Tarjan,树上倍增入门题

    离线Tarjian,来个JVxie大佬博客最近公共祖先LCA(Tarjan算法)的思考和算法实现,还有zhouzhendong大佬的LCA算法解析-Tarjan&倍增&RMQ(其实你们 ...

  5. <% 拼写页面

    js中 function udSelect(obj){ var val = $("#"+obj.id).val(); $("select[cd="+obj.id ...

  6. 从零开始学习Gradle之三---多项目构建

       随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成.对于这种多系统.多项目的情况,很多构建工具都已经提供了不错的支持,像maven.ant.Gradle除了借鉴了an ...

  7. 【面试】Redis

    1.如果在setnx之后执行expire之前进程意外crash或者要重启维护了,那会怎么样? set指令有非常复杂的参数,这个应该是可以同时setnx和expire合成一条指令来用的! 2.使用过Re ...

  8. 认识git的简单命令

    一.课程目的 教大家学会it的简单命令(老师建议 English 的前后要加空格) 二.认识 git 命令 整篇文章都是用语雀写的. 解释了(使用git)绑定gitee的操作 https://www. ...

  9. 微服务一键启动脚本shell没有环境变量的

    #!/bin/bash#######################################################export JAVA_HOME=/root/data/app/jd ...

  10. layui表格遇到的小操作

    表头文字显示不全 done:function(res){ tdTitle() }, /*表头文字显示不全*/ function tdTitle(){ $('th').each(function(ind ...