나는 한 위치에서 PDF를 가져와 다른 위치로 이동시키는 C#의 간단한 응용 프로그램을 가지고 있습니다. 나는이 작업을 수행이 응용 프로그램을 실행하면콘솔 응용 프로그램에서 매 분마다 코드 실행
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 :에 'INT'에서 변환 할 수 없습니다 'System.Threading.TimerCallback'C : \ Win \ MoveFiles \ MoveFiles \ MoveFiles \ Program.cs 22 33 MoveFiles
이 문제를 해결할 수있는 방법에 대한 제안 사항 쑤시? 여기에 생성자 밖으로
System.Threading.Timer 및 System.Timers.Timer의 두 가지 Timer 클래스가 있습니다. System.Timers.Timer에 대한 코드가 있지만 Timer가 System.Threading.Timer로 해결 중입니다. System.Threading을 사용하는 것은 당신이 우리에게 보여주지 않은 것을 추측합니다. –
@mikez, 전체 응용 프로그램입니다.이 응용 프로그램에는 더 이상 코드가 없습니다 ... – smr5
어딘가에 지시문을 사용하고 있습니다 (예 :'using System;'). 그렇지 않으면 Console, Path, Directory 등의 클래스에 대한 참조가 컴파일되지 않습니다. –