VB:重复evey x分钟的功能?

时间:2016-03-14 21:51:10

标签: vb.net

我正在使用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

中弹出错误

我尝试更改目录但仍在进行中。

任何建议都将不胜感激。

1 个答案:

答案 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