我在vb.net中需要通过com组件的方式调用Matlab生成的dll,该dll为计算用到的函数,在调用时计算时间会比较长,根据机器的配置不同时间不一样,我的机器大约3~5分钟,好些的电脑1~2分钟。因此想在计算中加入进度条显示计算进度。
我在网上看了关于processbar与backgroundwork的方法。其中在计算事件do work时都是使用的for循环来控制进度条的显示,然后在for循环中进行事件的操作,下面是我参考的别人的代码,红色的字是他们写的计算部分的内容,也就是for中的变量每增加一次,执行一次计算,然后修改一下进度条。而我的情况是我要计算的命令只有1句,就是调用dll函数,即calculation(变量名),因此我是不能通过这种循环的方式来实现的。请问各位大神,这种情况下我要怎么实现监测计算进度并反馈给进度条显示呢?谢谢了
Private Sub backgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs)
Dim worker As BackgroundWorker = TryCast(sender, BackgroundWorker)
Dim r As New Random()
Dim numCount As Integer = 0
While worker.CancellationPending = False AndAlso numCount < 10
Dim num As Integer = r.[Next](0, 100)
If num Mod 5 = 0 Then
numCount += 1
worker.ReportProgress(numCount, num)
Thread.Sleep(1000)
End If
End While
e.Result = numCount
End Sub
------解决方案--------------------
过程不受你控制,你想精确计算是不可能的,除非对方提供了一个反馈现在到百分之多少的机制
那么在无法控制执行过程的情况下,你能估算需要的时间吗?能估算的话,就按照时间来显示进度
如果估算不准,Windows 启动时有个条的,那个条一直来回的跑,你懂得
------解决方案--------------------
http://download.csdn.net/detail/caozhy/4832657
------解决方案--------------------
对头,等这个方法调用完了,再关闭
------解决方案--------------------
有个例子给你发了,是vb.net写的那种一直循环的进度条