Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 24385|Resposta: 4

[Fonte] Programas C# permitem que apenas uma instância execute o código correto

[Copiar link]
Publicado em 10/12/2016 14:55:50 | | | |


Escrevi um software de monitoramento de tráfego que quero que o computador execute apenas uma vez, e o código é o seguinte:



Encontre, imediatamente, clique no software, ele vai aparecer "Uma instância foi executada", mas,Depois de esperar 30 segundos, clicar no software, e ele roda com sucesso novamenteUma vez!!

É uma pena.O código acima está ok no modo DEBUG, mas não funciona no RELEASE.
O problema é que o Mutex é declarado como uma variável local, e está em modo de relese devido a problemas de otimização, possivelmente porque o compilador acha que o Mutex não é mais usado

Usado, reciclado, testado por mim mesmo,

Coloque o Mutex por cima e defina como uma variável estática para !!CertoO código é o seguinte:





Pontuação

Número de participantes1MB+1 contribuir+1 Colapso razão
Um pequeno novato que adora aprender + 1 + 1 Tipo um!

Veja todas as classificações





Anterior:C# permite apenas a escrita correta de uma instância da aplicação para rodar
Próximo:Como configurar a inicialização automática do software.
 Senhorio| Publicado em 10/12/2016 15:02:58 |
Campos estáticos não são reciclados pelo GC, campos estáticos são alocados no heap Loader, no heap não-GC, e não são controlados pelo GC.

Membros estáticos (de classes estáticas ou não) só são reciclados quando chegam ao AppDomain.UnLoad. Classes estáticas só podem ter membros estáticos
Publicado em 06/12/2017 11:48:05 |
Aprendido, obrigado por compartilhar
 Senhorio| Publicado em 23/02/2018 14:59:01 |
Outras implementações:

Método de iniciação:



 Senhorio| Publicado em 03/10/2025 16:10:11 |
.NET/C# implementa singleton de programa baseado em Mutex e MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com