Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 24385|Respuesta: 4

[Fuente] Los programas en C# solo permiten que una instancia ejecute el código correcto

[Copiar enlace]
Publicado en 10/12/2016 14:55:50 | | | |


He escrito un software de monitorización de tráfico que quiero que el ordenador ejecute solo una vez, y el código es el siguiente:



Busca, inmediatamente, haz clic en el software, te aparecerá "Se ha ejecutado una instancia", pero,Después de esperar 30 segundos, luego haz clic en el software, y vuelve a funcionar correctamente¡¡Una vez!!

Es una pena.El código anterior está bien en modo DEBUG, pero no funciona en RELEASE.
El problema es que Mutex se declara como una variable local, y en modo de relese debido a problemas de optimización, posiblemente porque el compilador piensa que Mutex ya no se usa

usado, reciclado, probado por mí mismo,

Pon Mutex encima y ponlo como variable estática para !!DerechaEl código es el siguiente:





Puntuación

Número de participantes1MB+1 contribuir+1 Colapso razón
Un pequeño novato que le encanta aprender + 1 + 1 ¡Como uno!

Ver todas las valoraciones





Anterior:C# solo permite ejecutar correctamente la escritura de una instancia de la aplicación
Próximo:Cómo configurar el arranque automático del software.
 Propietario| Publicado en 10/12/2016 15:02:58 |
Los campos estáticos no son reciclados por el GC, los campos estáticos se asignan en el montón Loader, en el heap no GC, y no están controlados por el GC.

Los miembros estáticos (de clases estáticas o no) solo se reciclan cuando llegan a AppDomain.UnLoad. Las clases estáticas solo pueden tener miembros estáticos
Publicado en 6/12/2017 11:48:05 |
Aprendido, gracias por compartirlo
 Propietario| Publicado en 23/2/2018 14:59:01 |
Otras implementaciones:

Método de arranque:



 Propietario| Publicado en 3/10/2025 16:10:11 |
.NET/C# implementa un programa singleton basado en Mutex y MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com