在更新当前加载的文件之前,我使用以下代码来停止任何正在进行的rsync进程:
try
{
Process[] rsyncProcesses = Process.GetProcessesByName("rsync");
foreach (Process p in rsyncProcesses)
{
p.Kill();
}
}
catch (Exception e)
{
Debug.WriteLine("Failed to kill Rsync process");
return RepoStateMachine.FsmEvent.Failure;
}
然而,一旦评估了这些行,就没有什么可以阻止rsync进程启动(再次)。有没有一种很好的方法可以阻止它们在短时间内启动,也就是说你可以创建某种锁,然后在文件写入完成时释放它?
服务器上运行的c#代码无法控制何时可以启动rsync进程 - 这是在远程计算机上手动启动的。
答案 0 :(得分:0)
我会回答我自己的问题,因为我做了更多的思考/研究。
我认为最好暂停sshd服务,然后在写完文件时继续使用。
ServiceController sshdService = new ServiceController("sshd");
sshdService.Pause();
...
sshdService.Continue();