我正在使用visual basic express 2010创建一个非常简单的应用程序。
我知道这是基本的东西,但我需要知道如何在应用程序处于打开状态时每隔X分钟重复相同的功能。
这是我的全部代码:
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
My.Computer.Network.DownloadFile(
"http://google.co.uk/images/someimage.png", "C:/Documents and Settings/All Users/Desktop/someimage.png")
End Sub
End Class
有人可以就此问题提出建议吗?
编辑:
这是我现在的全部代码:
Public Class Form1
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
My.Computer.Network.DownloadFile(
"http://new.tse.ir/en/json/MarketWatch/enMarketWatch_1.xls", "C:/temp/enMarketWatch_1.xls", "", "", False, 60, True)
End Sub
End Class
在计时器的属性面板中,我将Enabled设置为true,Interval设置为60000。
当我运行此代码时,我会下载文件,但是1秒后,该文件会自动删除,并在Visual Basic the operation has timed out
我尝试更改目录但仍在进行中。
任何建议都将不胜感激。
答案 0 :(得分:3)
在图形设计器中为表单添加计时器。
双击计时器,在代码窗口中生成其tick事件处理程序代码。
将您想要重复的代码移动到子
中Private Sub DownloadFile()
My.Computer.Network.DownloadFile("http://google.co.uk/images/someimage.png", "C:/Documents and Settings/All Users/Desktop/someimage.png")
End Sub
将以下命令添加到计时器刻度事件处理程序
中DownloadFile()
将form.load事件更改为
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
DownloadFile()
Timer1.Interval = x ' where x is the number of minutes*60000 because there are 60000 ticks in a minute
Timer1.Enabled = True
End Sub
我将你的代码放入一个单独的sub的原因是它可以在form.load处理程序和timer.tick处理程序中轻松重用,而不必再次编写它,如果将来你需要更改,例如文件路径,您只需记住更改一次。
另外我应该补充一点,在form.load处理程序中我已经包含了DownloadFile
方法,因为当启用计时器时,它会在间隔结束后生成一个勾号。启用定时器时不在开头。
另外 - 正如Plutonix在下面的评论中建议的那样 - 如果要下载的文件可能需要比定时器间隔的长度下载更长的时间,您应该禁用DownloadFile
子中的定时器并启用它再次在分的结尾。像这样: -
Private Sub DownloadFile()
Timer1.Enabled = False
My.Computer.Network.DownloadFile("http://google.co.uk/images/someimage.png", "C:/Documents and Settings/All Users/Desktop/someimage.png")
Timer1.Enabled = True
End Sub