扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
给你个多线程执行任务的例子
峨眉山网站建设公司创新互联,峨眉山网站设计制作,有大型网站制作公司丰富经验。已为峨眉山近1000家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的峨眉山做网站的公司定做!
先添加BackgroundWorker1、TextBox1、Button1,都是标准控件(窗体)在工具箱中找
vb.net2008
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
BackgroundWorker1.WorkerReportsProgress = True '可以传值
BackgroundWorker1.WorkerSupportsCancellation = True '可以暂停
TextBox1.Text = "开始多任务"
Button1.Text = "0"
BackgroundWorker1.RunWorkerAsync() '调用多任务程序
End Sub
'多任务程序
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
System.Threading.Thread.Sleep(20000) '暂停时间,可以是你的非常耗时程序任务
BackgroundWorker1.ReportProgress(100) '传出0-100数值
End Sub
'接收传出数值
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
'TextBox1.Text = e.ProgressPercentage
TextBox1.Text = "结束多任务"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Text += 1
End Sub
End Class
在启动程序后可以不停点击Button1看到数值的增加而不会卡死,20秒后TextBox1就会改成"结束多任务",实际上看你的程序是什么了,传值和接收传出数值的部分可取消
一、退出本次循环:
用goto语句处理,例如:
For i = 0 To 10
If i Mod 2 = 0 Then GoTo e
.....
....
e:
Next i
二、退出整个for循环用:exit for
扩展资料:
注意事项
常见的for循环一般是一下代码这种结构:
for (int i = 0; i 100; i++)
{
Console.WriteLine(i);
}
或者递减的:
for (int i = 100; i 0 ; i--)
{
Console.WriteLine(i);
}
但for当然不止这样一种用法。for的定义,()内的三段表达式,除了中间的必须产生布尔型,并未对其余两段有所限制,只要是表达式就可以了。在Lucene.Net中就有好几次这样的用法。例如:
for (Token token = input.Next(result); token != null; token = input.Next(result))
{
int len = token.TermText().Length;
if (len = min len = max)
{
return token;
}
}
简单的办法可以试试赋值后加
控件.refresh +
System.Windows.Forms.Application.DoEvents()
或者
My.Application.DoEvents()
复杂的方法就是用后台线程循环,并更新界面
要弄清楚这两个问题,就要明白For循环语句的语法规则:
For循环语句,首先是判断循环条件,如果循环条件不合理,则循环不执行。
那么看第一个语句,循环范围是 i = -3.5 to 5.5,显然这个是一个从-3.5到5.5的递增范围,可是后面的Step却是一个负数,表示以0.5的步长递减。取值范围要求从小到大,可是步长改变却是由大变小,显然这个循环条件自相矛盾,所以循环将不会执行,也就是循环执行的次数是0次!
如果循环条件合理,则开始执行循环语句,直到根据步长变换,下一个值超出循环范围则终止。
For j = 6 to 2 Step -2
Next
完整写法就是:
For j = 6 to 2 Step -2
Next j
Next j的意思就是下一个j值。结合本题,下一个j值等于6-2=4,这个时候,就是循环语句的第二个规则,判断循环变量的值是否超出循环范围,我们这里的j=4,显然是在6 to 2这个范围之内,所以循环继续,到下一个j的时候为2,依然在循环范围内;到这里,6,4,2我们的循环执行了3次,准备第4次循环的时候j = 2 -2 = 0超过了6 to 2这个范围,那么循环终止。
所以i循环内的每一个j循环将执行3次。
文字写在label的caption属性中,调用timer()函数
附上我写的左右往复运动代码,实现image1在picture1中左右往复运动
Private
Sub
Timer1_Timer()
If
Image1.Left
=
Picture1.ScaleWidth
-
Image1.Width
Then
k
=
1
If
k
=
1
Then
Image1.Left
=
Image1.Left
-
50
Else
Image1.Left
=
Image1.Left
+
50
End
If
If
Image1.Left
=
Then
k
=
End
Sub
值传递和地址传递(引用)的而导致的问题。
在For Each 的时候
当对象是值对象的时候,等于获得到一个副本。
当对象是引用对象的时候,则是获得到一个指针。
而在For To 的时候
无论对象是什么,你都获得到这个集合指定位置的指针。
更详细的,可以请参考以下内容,或直接去官方的MSDN了解
关于值类型和引用类型:
如果数据类型在它自己的内存分配中存储数据,则该数据类型就是“值类型”。“引用类型”包含指向存储数据的其他内存位置的指针。
值类型
值类型包括:
所有数字数据类型
Boolean、Char 和 Date
所有结构,即使其成员是引用类型
枚举,因为其基础类型总是 SByte、Short、Integer、Long、Byte、UShort、UInteger
或 ULong
引用类型
引用类型包括:
String
所有数组,即使其元素是值类型
类类型,如 Form
委托
非类型的元素
以下编程元素未限定为类型,因为您无法将它们中的任何一个指定为声明元素的数据类型:
命名空间
模块
事件
属性和过程
变量、常数和字段
使用对象数据类型
可以将引用类型或值类型指派给 Object 数据类型的变量。Object
变量总是存储指向数据的指针,从不存储数据本身。然而,如果将值类型指派给 Object 变量,则 Object
变量将表现得像存储自己的数据一样。有关更多信息,请参见 Object 数据类型。
通过将 Object 变量传递给 Microsoft.VisualBasic
命名空间中 Information
类的 IsReference
方法,可以确定该变量是用作引用类型还是值类型。如果 Object 变量的内容表示引用类型,则 Information.IsReference 返回 True。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流