当前位置:编程学习 > C#/ASP.NET >>

如何让VB.NET执行循环时执行其他东西呢?

程序正在执行一个循环,那样的话程序就会卡死,不能进行其他操作(比如说按按钮),怎么样才能让程序执行循环也不会卡死呢? 还有一个问题就是:怎么让VB.NET程序实现多线程执行任务?
追问:线程我会了可是不行啊,线程执行不了我的操作,说不能操作window消息呵呵,问题解决了!回答我这一个问题,回答完我就采纳你了!
dim k
Sub ssss() 
        Dim I As Integer
        For I = 1 to 5 Step 0
       k=k+1
        Next
    End Sub
Dim t1 As New Threading.Thread(AddressOf ssss)
        t1.Start()
其实用这几行的代码就可以实现多线程,为什么VB.NET还要专门弄个控件出来呢?控件的功能更大么?不行啊,线程执行不了我的操作,说不能操作window消息
答案:给你个多线程执行任务的例子
先添加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就会改成"结束多任务",实际上看你的程序是什么了,传值和接收传出数值的部分可取消
其他:要让窗体有响应,可以在循环中调用Application.DoEvents 方法
     For x = 0 To 100000
            For y = 0 To 100
                     'Code
            Next
            Application.DoEvents()
        Next
        MsgBox(Now)
Application.DoEvents 方法http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.doevents.aspx
线程处理http://msdn.microsoft.com/zh-cn/library/3e8s7xdd.aspx 给你个提示,用外部线程,你可以到百度上搜,有很多例子 

上一个:将此VB.NET代码翻译为C#的问题
下一个:谁有vb.net/c#窗体的非常规按钮控件?比如椭圆?6去7掉5汉6字8就6是0我6扣

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,