Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 24385|Відповідь: 4

[Джерело] Програми C# дозволяють виконувати правильний код лише одному екземпляру

[Копіювати посилання]
Опубліковано 10.12.2016 14:55:50 | | | |


Я написав програму для моніторингу трафіку, яку хочу, щоб комп'ютер запускав лише один раз, і код такий:



Знайдіть негайно, натисніть на програму, вона запитує «Запущено інстанс», але,Після 30 секунд очікування натисніть на програму, і вона знову успішно запуститьсяОдного разу!!

Шкода.Вищенаведений код працює в режимі DEBUG, але не працює в режимі RELEASE.
Проблема в тому, що Mutex декларується як локальна змінна і перебуває в режимі relese через проблеми оптимізації, можливо, тому, що компілятор вважає, що Mutex більше не використовується

використаний, перероблений, протестований собою,

Покладіть Mutex зверху і встановіть його як статичну змінну для !!ПраворучКод виглядає так:





Забити

Кількість учасників1МБ+1 Сприяють+1 Колапс причина
Маленький новачок, який любить вчитися + 1 + 1 Як один!

Переглянути всі рейтинги





Попередній:C# дозволяє правильно записувати лише один екземпляр додатку
Наступний:Як налаштувати автоматичне завантаження програмного забезпечення.
 Орендодавець| Опубліковано 10.12.2016 15:02:58 |
Статичні поля не переробляються GC, статичні поля виділяються у купі завантажувача, не-GC купі і не контролюються GC.

Статичні елементи (статичні класи чи ні) переробляються лише тоді, коли вони досягають AppDomain.UnLoad. Статичні класи можуть мати лише статичні члени
Опубліковано 06.12.2017 11:48:05 |
Дізнався, дякую, що поділився
 Орендодавець| Опубліковано 23.02.2018 14:59:01 |
Інші реалізації:

Метод запуску:



 Орендодавець| Опубліковано 03.10.2025 16:10:11 |
.NET/C# реалізує програму singleton на основі Mutex і MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com