我写了一个Windows服务但是当我安装它时我发现它不起作用。我不知道是什么问题!
此服务将一些文件从一个地方移动到另一个地方!
我需要帮助
感谢
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
}
protected override void OnContinue()
{
const string SrcPath = "d:\\Source";
const string DisPath = "d:\\Dist\\";
if (Directory.Exists(SrcPath))
{
string[] files = Directory.GetFiles(SrcPath);
for (int i = 0; i < files.Length; i++)
{
Console.WriteLine(files[i]);
string[] list = files[i].Split('\\');
if (!File.Exists(DisPath + list[list.Length - 1]))
{
File.Move(files[i], DisPath + list[list.Length - 1]);
}
}
}
}
protected override void OnStop()
{
}
}
答案 0 :(得分:2)
那是因为你在OnStart()
方法中没有做任何事情。你需要拥有你想要的逻辑。从SCM触发“继续”命令时会触发OnContinue()
。
答案 1 :(得分:1)
只是为了补充Shark说的话,我猜你不希望这只是做一次工作然后实际上已经死了。所以你需要有某种机制来定期确定是否需要完成工作,然后再做工作,然后等一下再重复。
否则,我建议您只看一下将批处理脚本放在Windows任务调度程序上。
答案 2 :(得分:0)
您必须在OnStart
System.Timers.Timer timer = new System.Timers.Timer();
protected override void OnStart(string[] args)
{
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Enabled = true;
timer.Interval = AppSettings.PeriodOfQuering;
}
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
DoJob();
}