gpt4 book ai didi

c# - 每分钟在控制台应用程序中执行代码

转载 作者:行者123 更新时间:2023-12-04 18:06:22 25 4
gpt4 key购买 nike

我有一个简单的 C# 应用程序,它从一个位置获取 PDF 并将其移动到另一个位置。

namespace MoveFiles
{
class Program
{
public static string destinationPath = @"S:\Re\C";
static void Main(string[] args)
{

//location of PDF files

string path = @"S:\Can\Save";

//get ONLY PDFs

string[] filePath = Directory.GetFiles(path, "*.pdf");


foreach (string file in filePath)
{
Console.WriteLine(file);
string dest = destinationPath + "\\" + Path.GetFileName(file);
File.Move(file, dest);
}
Console.ReadKey();


}
}

如果我运行这个应用程序,它就可以完成工作,但是,我需要每分钟执行一次此代码。我本可以使用 task scheduler 每分钟运行一次应用程序,但遗憾的是最短运行时间为 5 分钟。

我尝试过使用 while(true) 但它不起作用。如果我在应用程序运行时向文件夹添加更多 PDF 文件,它不会将其移动到不同的文件夹。

我在网上找到了使用 Timer 的建议,但我遇到了问题:

static void Main(string[] args)   
{
Timer t = new Timer(60000); // 1 sec = 1000, 60 sec = 60000
t.AutoReset = true;
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
t.Start();
}
private static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
// do stuff every minute
}

但是我得到了编译器错误:

Error 2 Argument 1: cannot convert from 'int' to 'System.Threading.TimerCallback' C:\Win\MoveFiles\MoveFiles\MoveFiles\Program.cs 22 33 MoveFiles

关于如何解决这个问题有什么建议吗?

最佳答案

解决方案比我想象的要简单。

我是这样解决的。它可能不是最好的解决方案,但它可以满足我的需要。

我创建了一个 while 循环并使用 Thread.Sleep(60000) 强制应用在再次执行之前进入休眠状态。

namespace MoveFiles
{
class Program
{
public static string destinationPath = @"S:\Re\C";
static void Main(string[] args)
{

//location of PDF files

while (true)
{
string path = @"S:\Can\Save";

//get ONLY PDFs

string[] filePath = Directory.GetFiles(path, "*.pdf");


foreach (string file in filePath)
{
Console.WriteLine(file);
string dest = destinationPath + "\\" + Path.GetFileName(file);
File.Move(file, dest);
}
Thread.Sleep(60000);
}

}

}
}

关于c# - 每分钟在控制台应用程序中执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com