Pergunta

Eu encontrei há muitas mensagens que mostram como detectar se a instância do aplicativo em execução. Mas não consigo encontrar qualquer um que mostra como acessar ou usar o mesmo aplicativo em execução.

Eu criei itens do menu shell e ligou-os um aplicativo. Por ex. Se você clique direito em qualquer pasta mostra "Monitor de OS". Se eu cliquei em que uma aplicação é iniciada. Se eu novamente à direita clicado na pasta e selecionado "Monitor de OS" outra instância do mesmo aplicativo é iniciado. Eu tenho que evitar isso. Ainda mais quando o usuário fecha o "Monitor de OS" formar Eu só fiz isso escondido. De modo que se o usuário seleciona novamente a mesma opção de menu, em seguida, a mesma necessidade formulário em execução para mostrar.

Eu criei o aplicativo usando C # 2005. Alguém tem a idéia como eu poderia acessar a mesma instância em execução do aplicativo.

Agradecemos antecipadamente.

Foi útil?

Solução

Como espaços de endereços de aplicativos são separados, você tem que usar algum mecanismo / object global. Um exemplo é nomeado mutexes: você cria um mutex nomeado, se ele já existe, então o aplicativo já estava correndo. Usando Mutexes por garantir que apenas uma instância está sendo executado é apresentado neste blog

O segundo passo é comunicar com a instância em execução. Portanto, você tem que usar algum mecanismo IPC. Mais fácil é usar mensagens do Windows se você estiver executando o Windows (como no exemplo do Blog). Note que isso não seria portátil para MONO como você tem que fazer chamadas nativas. Se o que importa, você poderia usar uma conexão de rede entre outras possibilidades. Veja as respostas a esta pergunta: IPC Mecanismos em C # - Uso e Melhores Práticas .

Depois de ter transmitido os parâmetros para a instância em execução, você tem que sair, é claro, caso contrário você vai acabar com duas aplicações em execução. Por um curto período de tempo (o tempo de transferência de parâmetros) você tem de fato duas instâncias em execução, mas apenas uma forma eficaz está fazendo o trabalho.

Esta resposta foi feita sob o pressuposto de que você pode / desejo de fazer modificações para "OS monitor".

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