如何每 30 秒运行一个脚本?

问题描述 投票:0回答:1

如何让 ftp 脚本每 10 或 30 秒运行一次?

ftp 脚本:

FtpWebRequest makedir = (FtpWebRequest)WebRequest.Create("ftp://xxx.xxx.xxx.xxx/" + System.Environment.MachineName + "___" + System.Environment.UserName + @"/");
makedir.Method = WebRequestMethods.Ftp.MakeDirectory;
makedir.Credentials = new NetworkCredential("usr", @"passwd");
FtpWebResponse makedirStream = (FtpWebResponse)makedir.GetResponse();
makedirStream.Close();

我正在阅读有关在线程上使用 sleep 以及使用计时器的内容。但我不知道如何使用它们。问题是它还需要每 30 秒重新运行一次,而不仅仅是一次。

c# timer
1个回答
4
投票

将代码放入方法中,例如命名为

RunFtp()
,然后使用 Timer 像这样:

var t = new System.Threading.Timer(
    callback: o => RunFtp(), 
    state: null, 
    dueTime: 0,      // run now
    period: 30000);  // milliseconds

.NET 中有许多不同类型的计时器,请参阅上面链接中的备注中的绿色面板以获取列表。

或使用 Windows 任务计划程序 来计划并重复运行应用程序。

或者像这样使用

Task.Delay
...

while (true)
{
    RunFtp();
    System.Threading.Task.Delay(30000).Wait();
}

...让您的代码在执行之间暂停 30 秒,但您还需要添加代码每次的执行时间,以便它准确地每 30 秒开始运行一次。

如果您想避免阻塞,您可能还需要考虑使用 async/await 来运行它。

© www.soinside.com 2019 - 2024. All rights reserved.