Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LucianoMoreira

Como proteger uma aplicação batch das ações concorrentes do usuário

Recommended Posts

Desenvolvi uma aplicação VB.NET (Windows Form Application) que consolida diversas planilhas em uma única planilha.

Percebi que em tempo de execução a interação do usuário com outros aplicativos (ex. Notepad, Word, outras planilhas) pode ser afetada ou afetar a planilha manipulada pelo programa.

Por exemplo: Há um trecho no programa que possui um loop que executa um copyrange de várias planilhas e faz um paste na planilha principal.

Se o usuário estiver trabalhando por exemplo, no notepad, word ou até mesmo em outra planilha no exato momento em que o programa está em execução e estiver realizando um copy/paste, este pode afetar a planilha trabalhada pelo programa e/ou o paste do usuário pode ser alterado pelo copy que o programa executou.

Ou seja, usuário afetando a execução do programa e vise-versa.

A aplicação roda sem a necessidade de qualquer interferência do usuário.

Há como isolar o programa das ações do usuário?

Grato.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a planilha que seu sistema usa é aberta para os usuários editarem você não vai conseguir isolar as ações delas do programa principal. O que eu aconselho é você criar uma espécie de "swap". Tente assim:

 

  1. Quando executar o copyRange, crie uma cópia da planilha (ou das planilhas) que serão manipuladas em uma pasta temporária, ou armazene na memória o conteúdo
  2. Realize as alterações
  3. Delete as planilhas do disco (ou da memória)

A memória vai fazer o processamento ficar bem mais rápido, mas vai exigir um pouco mais do computador.

 

Uma outra alternativa seria "escanear" por programas que estejam usando seu arquivo e pausar a execução da sua rotina, veja o link abaixo:

http://stackoverflow.com/questions/1951791/how-to-check-if-a-file-is-already-open-by-another-process-in-c

http://stackoverflow.com/questions/10518151/how-to-check-in-command-line-if-a-given-file-or-directory-is-locked-used-by-any

http://stackoverflow.com/questions/876473/is-there-a-way-to-check-if-a-file-is-in-use

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.