Pergunta

Tenho um serviço que verifica pastas de rede usando um método parallel.for.

No entanto, recentemente estou descobrindo se eu interrompo o serviço, embora o Windows diga que o serviço foi interrompido, o processo ainda está em execução no gerenciador de tarefas.No entanto, está em 0 cpu e a memória não muda.Se eu tentar encerrar a tarefa (mesmo que seja forçado no prompt de comando), ele apenas diz acesso negado e terei que reiniciar o servidor.

Qual seria a melhor maneira de garantir que tudo termine?

Pensei em adicionar um booleano global que no procedimento de parada se tornasse verdadeiro e parte do meu código paralelo verificará isso e chamará s.stop.

Obrigado

Foi útil?

Solução

Resumindo, quando o serviço é interrompido, ele precisa cancelar todas as operações pendentes e em execução e, em seguida, aguardar que essas operações sejam realmente concluídas.Verifique a referência do MSDN para Cancelamento de tarefa .

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