网站建设资讯

NEWS

网站建设资讯

关于vb.net延时函的信息

VB中Timer和Doevents的问题!

Sleep是挂起式等待,对于小于一个时钟周期(一般是16ms)的等待可能是系统通过循环实现的,所以CPU使用率必然很高,另外,你sleep 1的话操作系统无法精确做到1m,所以你的代码Sleep 1实际要等上若干毫秒以后才有反应(因为1ms小于windows的一个调度周期)

创新互联公司主要从事成都网站制作、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务夏邑,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

解决办法是用SetTimer的这个API

在窗体里添加一个按钮,添加代码:

Private Sub Command1_Click()

TimerId = SetTimer(0, 0, 1000, AddressOf TimerProc)

End Sub

添加一个模块,添加代码

Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Public TimerId As Long

Public Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)

KillTimer 0, TimerId

Form1.Print "时间到"

End Sub

需要注意的是用户层的任何定时器设定值小于15ms时都将是不精确的

vb.net使用Sleep后有些代码没有执行!

在VB.NET中,带框架窗体的大小是不能为0的,要想做到高、宽都为0,需要自己重绘一个无边框窗体,用外置图片来绘制,配合PS做一些图片,既可以换肤还能做的很漂亮。

按当前代码修改,你把下面的代码粘回去就可以了,窗体的高和宽达到最小时,循环会自己退出,避免无限循环;

Select Case 2

Case Is = 1

Dim w As Integer = Me.Width

Do

Me.Width -= 5 : w -= 5

Threading.Thread.Sleep(3)

Loop While Me.Width = w

Case Is = 2

Dim h As Integer = Me.Height

Do

Me.Height -= 5 : h -= 5

Threading.Thread.Sleep(3)

Loop While Me.Height = h

Case Is = 3

Do

Me.Opacity -= 0.05

Threading.Thread.Sleep(120)

Loop Until Me.Opacity = 0

End Select

vb.net 请问SmtpClient发送邮件后, MailMessage是否自动释放?

这段代码我执行无误,不太清楚题主是如何异步发送的,题主也没给出错误究竟是什么,所以无从判断。

只能说需要手动释放,或者用 message = Nothing 也可以释放。

【针对问题补充的回答】

注释行已去掉,仍能正常运行,可能跟网络环境有关。

另外不知题主 AddHandler client.SendCompleted, AddressOf SendCompletedCallback 这行中的回调函数 SendCompletedCallback 是怎么写的,我写的是:

Private Function SendCompletedCallback(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)

If e.Cancelled Then

REM 邮件发送被取消

ElseIf e.Error.ToString  "" Then

REM 邮件发送失败

Else

REM 发送成功

End If 

End Function

另外建议用 Try-Ctach-End Try 结构,并在释放前设置延时函数。

如何正确理解VB.NET延时函数

第一个for完成对delay_time参数的控制,即共循环多少次内部循环

第二个for(内部循环),完成对j从0到199的控制,共循环200次。

翻译成汇编就是:

(R0为传递参数)

DELAY:

MOV R1,#200

DJNZ R1,$

DJNZ R0,DELAY

RET


分享题目:关于vb.net延时函的信息
文章地址:http://cdweb.net/article/hdgjoi.html