Коротка відповідь - ні, ви не можете надійно відкласти ngen (і ви не повинні намагатися), єдиний послідовний / корисний варіант, який я знайшов, - змусив його працювати до завершення і не залишати його ховатися у фоновому режимі.
Якщо ви намагаєтесь зберегти кілька циклів процесора на акумуляторі (або в моєму випадку зупинити сервер від запуску ngen після повернення його в сервіс після оновлень Windows), найкращим варіантом буде змусити ngen запускатись самостійно. Для настільного ПК приходять до уваги 2 варіанти:
Створіть на робочому столі файл .bat або .ps1 за допомогою відповідної команди ngen нижче - просто двічі клацніть та зачекайте, коли ngen закриється, перш ніж ви вийдете з розетки. Якщо ви створили сценарій у папці Windows замість цього і ярлик до нього на робочому столі, ви також можете скористатися командою або командою Powershell або діалоговим вікном «Запустити», щоб виконати його за необхідності (перед тим, як вимкнути підключення / після оновлення).
Іншим варіантом, який повинен працювати, є використання запланованого завдання для виконання вищевказаного сценарію. Запустіть його під час запуску, без входу в систему, як адміністратор. Якщо ваш ноутбук може встановлювати оновлення протягом ночі і може перезавантажити, це повинно працювати добре.
Для запуску ngen вам потрібна лише одна з наступних команд, використовуйте перший / найбільш підходящий варіант для вашої системи:
.Net 4 або краще на 64 біт
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems
.Net 4 або краще на 32 біт
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems
.Net 3 або менше на 64 біт
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executeQueuedItems
.Net 3 або менше на 32 біт
C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executeQueuedItems
Нижче наведено мінімальний вихід, який ви отримуєте від ngen, коли елементів у черзі немає:
PS C:\Users\Administrator> C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems
Microsoft (R) CLR Native Image Generator - Version 4.6.1586.0
Copyright (c) Microsoft Corporation. All rights reserved.
All compilation targets are up to date.
Коли ngen.exe запускається з executeQueuedItems
ним, він змусить його виконувати всі очікувані завдання якомога швидше. Зазвичай ngen працює на фоновому потоці з низьким пріоритетом (і, мабуть, просто починається навмання), ідея полягає в тому, що він не повинен голодувати іншими процесами процесора - хоча це не завжди працює. Запуск ngen в інтерактивному режимі швидше, ніж залишати його працювати у фоновому режимі - але це більше вплине на продуктивність. Скільки часу це потрібно, залежить від вашого обладнання та скільки / які власні зображення потрібно перекомпонувати.