Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde
Já trabalhei criando threads em aplicativos desktop, porém me deparei com problema que ainda não achei uma solução, é o seguinte, tenho um programa que irá verificar se outros programas esta aberto, a lista de programas a ser verificada é cadastrada pelo usuário, logo não existem programas exatos a serem verificados, por exemplo o usuário pode cadastrar para ser verificado:
* Word, Excel, Outlook e Internet explorer
enquanto um outro usuário em sua máquina pode cadastrar:
* SQLServer, Visual Sttudio
Claro que o usuário irá cadastrar o nome de processos deles, mas em fim
eu já criei threads que ficam verificando se um determinado programa esta aberto, porém isso era fixo então eu criava a aplicação e fazia um loop dentro da thread e pronto ficava verificando se a aplicação esta aberto.
Porém no caso em questão como é dinâmico o programa precisa verificar no banco de dados as aplicações que irão ser monitoradas e então ficar verificando, caso ela pare ele irá emitir um alerta, mas como é dinâmico a quantidade e os programas que serão monitorados como eu faria isso? Alguém tem sugestão?
Detalhe importante estou precisando fazer isso em c# com WPF desktop
Bom dia KhaosDoctor
Entendi a ideia e no caso das threads para esse array, eu faria uma thread apenas que ficaria percorrendo a array avaliando os aplicativos como uma fila que ao finalizar inicia novamente ou tentaria criar uma thread para cada item do array? Qual seria a melhor opção, o que vocÊ acha?
Uma thread para percorrer o Array, se fosse uma para cada processo seria demais, deixaria o pc todo lento. Você percorre o array nesta thread e verifica os programas, ai você pode tanto passar valores por application settings ou qualquer outra variável global para saber se a thread ja acabou ou não.
ok obrigado pela ajuda, vou fazer da forma que você sugeriu
Logo no começo da aplicação crie um array que buscará todos os programas que o usuário cadastrou para serem procurados no banco de dados, ou seja, você vai pegar todos os dados de threads deste usuário e armazenar localmente para evitar ter que fazer a query sempre.
Toda vez que o usuário adicionar um programa novo, você refaz a função de preenchimento do array. Daí pra frente é a mesma coisa, a unica coisa que muda é que você terá de fazer um For para percorrer este array dentro do loop que você já tinha criado.