TimerJob – Como controlar a barra de progresso?

Olá SharePointers,

Já postei algumas vezes sobre TimerJobs nesse blog (posts Regular TimerJob e Work Item TimerJobs e Criando Custom Timer Jobs no SharePoint) entretanto, existe um mecanismo muito pouco utilizado que serve de barra de progresso para a execução do seu TimerJob.

Para fazer esse controle, utilizarei o mesmo template criado no post Criando Custom Timer Jobs no SharePoint e só adicionarei os controles necessários.

Na documentação do MSDN, vemos que a classe SPJobDefinition expõe um método para essa operação SPJobDefinition.UpdateProgress. Dessa forma, só precisamos chamá-lo passando um número até 100 que indica o percentual de progresso.

O que nos resta é gerar um cálculo para identificar o progresso atual. Isso é mais fácil né?

Abaixo um exemplo:

public override void Execute(Guid contentDbId) { int[] collection = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int count = 0; foreach (var item in collection) { Thread.Sleep(5000); count++; this.UpdateProgress((count * 100) / collection.Length); } }

 

Após fazer o deploy, e executar o TimerJob, é possível acompanhar sua execução na URL http://URL_DA_CENTRAL_ADMIN/_admin/ServiceRunningJobs.aspx.

Você deverá ver algo como os prints abaixo:

 

image

 

image

 

URL para fazer o download da solução utilizada nesse exemplo: http://1drv.ms/1vVYIJ9

 

Abraços!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *