Pergunta

Gostaria de executar um cronômetro a cada 5 horas e excluir os arquivos da pasta com mais de 4 dias. Você poderia por favor com o código de exemplo?

Foi útil?

Solução

Como não foi mencionado, eu recomendaria usar um System.Threading.Timer Para algo assim. Aqui está um exemplo de implementação:

System.Threading.Timer DeleteFileTimer = null;

private void CreateStartTimer()
{
    TimeSpan InitialInterval = new TimeSpan(0,0,5);
    TimeSpan RegularInterval = new TimeSpan(5,0,0);

    DeleteFileTimer = new System.Threading.Timer(QueryDeleteFiles, null, 
            InitialInterval, RegularInterval);

}

private void QueryDeleteFiles(object state)
{
    //Delete Files Here... (Fires Every Five Hours).
    //Warning: Don't update any UI elements from here without Invoke()ing
    System.Diagnostics.Debug.WriteLine("Deleting Files...");
}

private void StopDestroyTimer()
{
    DeleteFileTimer.Change(System.Threading.Timeout.Infinite,
    System.Threading.Timeout.Infinite);

    DeleteFileTimer.Dispose();
}

Dessa forma, você pode executar seu código de exclusão de arquivos em um serviço do Windows com um incômodo mínimo.

Outras dicas

DateTime CutOffDate = DateTime.Now.AddDays(-4)
DirectoryInfo di = new DirectoryInfo(folderPath);
FileInfo[] fi = di.GetFiles();

for (int i = 0; i < fi.Length; i++)
{
    if (fi[i].LastWriteTime < CutOffDate)
    {
        File.Delete(fi[i].FullName);
    }
}

Você pode substituir LastWriteTime Propriedade de outra coisa, é exatamente isso que eu uso ao limpar um cache de imagem em um aplicativo que tenho.

EDITAR:

Embora isso não inclua a parte do timer ... Vou deixar você descobrir essa parte. Um pouco de pesquisador deve mostrar várias maneiras de fazê -lo em um cronograma.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top