简单问题,正解即结贴

tiantian1980 2009-09-13 10:07:06
由于各种原因用inet上传太慢,为使Picture1_DblClick能正常执行下来,不受inet传太慢的影响,使其上传部分在后台执行,成功上传到服务器上后完毕。考虑过多线程,但多线程vb中实现比较难,用Timer应也可以。但不怎么知道传成功后让Timer1_Timer事件不执行。请高手帮帮忙!
  Private Sub Picture1_DblClick()
……………………………………
'这里原本是放上传程序的,想把它移出,在后台执行
'Timer1.Enabled = True '激活时间控件
'Timer1.Interval = 1000
Unload Me
End Sub


Private Sub Timer1_Timer()
'Path = "c:\screenShot.jpg"
S_Path = Format(Date, "YYYYMMDD") & Format(Time(), "HHMMSS") & ".jpg"
'上传截图到服务器上
Inet1.URL = "ftp://222.73.228.17"
Inet1.Protocol = icFTP
'Inet1.RemoteHost = "222.73.228.17"
Inet1.RemotePort = 21
Inet1.UserName = "scr"
Inet1.Password = "*****"
Inet1.Execute , "PUT " & Path & " " & S_Path
right1 = Inet1.StillExecuting
Do While right1
right1 = Inet1.StillExecuting
DoEvents
Loop
End Sub
...全文
138 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengfeng28 2009-09-14
  • 打赏
  • 举报
回复
多放两个TIMER控件
king06 2009-09-14
  • 打赏
  • 举报
回复
定义一个变量来检查。
嗷嗷叫的老马 2009-09-14
  • 打赏
  • 举报
回复
tiantian1980 2009-09-13
  • 打赏
  • 举报
回复
猜path不应该注释掉
Private Sub Timer1_Timer()
'Path = "c:\screenShot.jpg"
——————————————
在实际运行中我没有注释掉
jhone99 2009-09-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 tiantian1980 的回复:]
上传代码移到Timer1_Time()后,不知什么原因现在图片根本传不到服务器上去了,急急急
[/Quote]

猜path不应该注释掉
Private Sub Timer1_Timer()
'Path = "c:\screenShot.jpg"
tiantian1980 2009-09-13
  • 打赏
  • 举报
回复
上传代码移到Timer1_Time()后,不知什么原因现在图片根本传不到服务器上去了,急急急
jhone99 2009-09-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 tiantian1980 的回复:]
其实是这两张图(图片是一样的)一张是存在本地的就是'Path = "c:\screenShot.jpg",然后把本地的这个图传到服务器上去,到服务器上不能叫相同的名字,所以就有screenShot.jpg这张图按时间重命名后再传到服务器上。我再想了一下S_Path = Format(Date, "YYYYMMDD") & Format(Time(), "HHMMSS") & ".jpg"放在Tim¡­
[/Quote]

这么说碰上什么时间都可以,就没有顾虑了
tiantian1980 2009-09-13
  • 打赏
  • 举报
回复
其实是这两张图(图片是一样的)一张是存在本地的就是'Path = "c:\screenShot.jpg",然后把本地的这个图传到服务器上去,到服务器上不能叫相同的名字,所以就有screenShot.jpg这张图按时间重命名后再传到服务器上。我再想了一下S_Path = Format(Date, "YYYYMMDD") & Format(Time(), "HHMMSS") & ".jpg"放在Timer1_Time()里没有问题的
jhone99 2009-09-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tiantian1980 的回复:]
有一个问题,就是如果上传要5秒,没有在1秒内上传到服务器,也就是过了一秒后,此时没上传完会执行Timer1_Time()里面的事件吗?
[/Quote]

这个没看懂
jhone99 2009-09-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tiantian1980 的回复:]
谢谢jhone99的提醒
————————————————————————
我把S_Path = Format(Date, "YYYYMMDD") & Format(Time(), "HHMMSS") & ".jpg" 这一句移到Picture1_DblClick()
里应没别的问题了,是吗?

[/Quote]

我不清楚你的图片文件名和timer触发时间是否有关系,看你的代码是有关联的,这样移到Picture1_DblClick()可能需要一些处理,其实在timer里做一些适当处理应该可以,date、time和图片名什么关系?

tiantian1980 2009-09-13
  • 打赏
  • 举报
回复
有一个问题,就是如果上传要5秒,没有在1秒内上传到服务器,也就是过了一秒后,此时没上传完会执行Timer1_Time()里面的事件吗?
tiantian1980 2009-09-13
  • 打赏
  • 举报
回复
谢谢jhone99的提醒
————————————————————————
我把S_Path = Format(Date, "YYYYMMDD") & Format(Time(), "HHMMSS") & ".jpg" 这一句移到Picture1_DblClick()
里应没别的问题了,是吗?
jhone99 2009-09-13
  • 打赏
  • 举报
回复
lz的逻辑貌似有点混乱,看代码好像每次timer触发发送的是不一样的图片,传成功后timer不需要停止,等待下一次触发传下一个图片,这样就可以了
jhone99 2009-09-13
  • 打赏
  • 举报
回复
S_Path = Format(Date, "YYYYMMDD") & Format(Time(), "HHMMSS") & ".jpg"

这种写法有问题,有时系统正在做其他的,timer不能触发就会错过时间
chinaboyzyq 2009-09-13
  • 打赏
  • 举报
回复
让Timer1再执行的方法是:Timer1.Enabled=True
chinaboyzyq 2009-09-13
  • 打赏
  • 举报
回复

Private Sub Timer1_Timer()
'Path = "c:\screenShot.jpg"
S_Path = Format(Date, "YYYYMMDD") & Format(Time(), "HHMMSS") & ".jpg"
'上传截图到服务器上
Inet1.URL = "ftp://222.73.228.17"
Inet1.Protocol = icFTP
'Inet1.RemoteHost = "222.73.228.17"
Inet1.RemotePort = 21
Inet1.UserName = "scr"
Inet1.Password = "*****"
Inet1.Execute , "PUT " & Path & " " & S_Path
right1 = Inet1.StillExecuting
Do While right1
right1 = Inet1.StillExecuting
DoEvents
Loop
Timer1.Enabled=False
End Sub


三楼の郎 2009-09-13
  • 打赏
  • 举报
回复
Private Sub Timer1_Timer()
'Path = "c:\screenShot.jpg"
S_Path = Format(Date, "YYYYMMDD") & Format(Time(), "HHMMSS") & ".jpg"
'上传截图到服务器上
Inet1.URL = "ftp://222.73.228.17"
Inet1.Protocol = icFTP
'Inet1.RemoteHost = "222.73.228.17"
Inet1.RemotePort = 21
Inet1.UserName = "scr"
Inet1.Password = "*****"
Inet1.Execute , "PUT " & Path & " " & S_Path
right1 = Inet1.StillExecuting
Do While right1
right1 = Inet1.StillExecuting
DoEvents
Loop

Timer1.Enabled=false '加上这一句
End Sub
chinaboyzyq 2009-09-13
  • 打赏
  • 举报
回复
Timer1.Enabled=False
贝隆 2009-09-13
  • 打赏
  • 举报
回复
1、定义一个布尔变量:bolUpDate
2、开始上传时:bolUpDate=False
3、上传结束时:bolUpDate=True
4、随时检查bolUpDate的属性,如果为True,那么设置Timer1的属性为:False
SYSSZ 2009-09-13
  • 打赏
  • 举报
回复
我认为,上传代码不应写在 Timer1_Timer事件中,很多不便都是因为上传代码写在 Timer1_Timer事件中造成的,难道上传代码不写在 Timer1_Timer事件中就不行吗?
加载更多回复(8)

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧