我在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
}
但我得到的編譯器錯誤:
錯誤2參數1:無法從「詮釋」轉換到'System.Threading.TimerCallback'C:\ Win \ MoveFiles \ MoveFiles \ MoveFiles \ Program.cs 22 33 MoveFiles
關於如何解決這個問題的任何建議ssue?
有兩個Timer類,System.Threading.Timer和System.Timers.Timer。你已經得到了System.Timers.Timer的代碼,但是Timer正在解析爲System.Threading.Timer。我猜測有一個使用System.Threading,你沒有告訴我們。 – 2014-09-05 21:55:30
@mikez,這就是整個應用程序,在這個應用程序中沒有更多的代碼... – smr5 2014-09-05 21:56:37
在某處使用指令(例如'using System;')。否則,那些對Console,Path,Directory等類的引用將無法編譯。 – 2014-09-05 21:58:37