คำตอบสั้น ๆ คือไม่คุณไม่สามารถชะลอ ngen ได้อย่างน่าเชื่อถือ (และคุณไม่ควรลอง) ตัวเลือกที่สอดคล้อง / มีประโยชน์ที่ฉันพบคือบังคับให้มันทำงานให้เสร็จและไม่ปล่อยให้แฝงตัวอยู่เบื้องหลัง
หากคุณพยายามที่จะบันทึกซีพียูบางรอบบนแบตเตอรี่ (หรือในกรณีของฉันหยุดเซิร์ฟเวอร์ไม่ให้เรียกใช้ ngen หลังจากส่งคืนไปยังบริการหลังจากอัพเดต Windows) ตัวเลือกที่ดีที่สุดของคุณคือบังคับให้ ngen รันด้วยตัวคุณเอง สำหรับพีซีแบบตั้งโต๊ะมี 2 ตัวเลือกที่ควรคำนึงถึง:
สร้างไฟล์. bat หรือ. ps1 บนเดสก์ท็อปของคุณด้วยคำสั่ง ngen ที่เหมาะสมด้านล่าง - เพียงแค่ดับเบิลคลิกและรอให้ ngen ปิดก่อนที่คุณจะถอดปลั๊ก หากคุณสร้างสคริปต์ในโฟลเดอร์ Windows ของคุณแทนและทางลัดไปยังสคริปต์บนเดสก์ท็อปของคุณคุณยังสามารถใช้ Command หรือ Powershell Prompt หรือไดอะล็อก Run เพื่อเรียกใช้งานตามที่ต้องการ (ก่อนที่คุณจะถอดปลั๊ก / หลังการอัพเดท)
ตัวเลือกอื่นที่ควรใช้คือใช้งานที่กำหนดเวลาไว้เพื่อเรียกใช้งานสคริปต์ด้านบน เรียกใช้เมื่อเริ่มต้นโดยไม่มีผู้ใช้ที่เข้าสู่ระบบในฐานะผู้ดูแลระบบ หากแล็ปท็อปของคุณได้รับอนุญาตให้ติดตั้งอัปเดตข้ามคืนและสามารถรีบูตเครื่องได้ควรทำงานได้ดี
ในการรัน 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 จะทำงานบนเธรดพื้นหลังที่มีลำดับความสำคัญต่ำ (และเห็นได้ชัดว่าเพิ่งเริ่มต้นโดยการสุ่ม) แนวคิดที่ว่ามันไม่ควรที่จะอดกระบวนการอื่น ๆ ของ CPU - แม้ว่ามันจะไม่ได้ผลเสมอไป การเรียกใช้ ngen แบบโต้ตอบนั้นเร็วกว่าปล่อยให้มันรันอยู่เบื้องหลัง แต่จะส่งผลต่อประสิทธิภาพมากกว่า ใช้เวลานานเท่าใดขึ้นอยู่กับฮาร์ดแวร์ของคุณและจำนวน / รูปภาพดั้งเดิมที่ต้องทำการคอมไพล์ใหม่