大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这段代码我执行无误,不太清楚题主是如何异步发送的,题主也没给出错误究竟是什么,所以无从判断。
创新互联建站专注于企业成都全网营销推广、网站重做改版、巴林右旗网站定制设计、自适应品牌网站建设、H5高端网站建设、电子商务商城网站建设、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为巴林右旗等各大城市提供网站开发制作服务。
只能说需要手动释放,或者用 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 结构,并在释放前设置延时函数。
第一个for完成对delay_time参数的控制,即共循环多少次内部循环
第二个for(内部循环),完成对j从0到199的控制,共循环200次。
翻译成汇编就是:
(R0为传递参数)
DELAY:
MOV R1,#200
DJNZ R1,$
DJNZ R0,DELAY
RET
在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
Sleep是挂起式等待,对于小于一个时钟周期(一般是16ms)的等待可能是系统通过循环实现的,所以CPU使用率必然很高,另外,你sleep 1的话操作系统无法精确做到1m,所以你的代码Sleep 1实际要等上若干毫秒以后才有反应(因为1ms小于windows的一个调度周期)
解决办法是用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时都将是不精确的