A resposta curta é não, você não pode adiar de forma confiável (e não deve tentar), a única opção consistente / útil que encontrei foi forçar a execução até a conclusão e não deixá-la oculta em segundo plano.
Se você está tentando salvar alguns ciclos de CPU na bateria (ou, no meu caso, impedir que um servidor execute o ngen depois de devolvê-lo ao serviço após as atualizações do Windows), sua melhor opção é forçar o ngen a executar você mesmo. Para um PC de mesa, duas opções vêm à mente:
Crie um arquivo .bat ou .ps1 na área de trabalho com o comando ngen apropriado abaixo - basta clicar duas vezes e aguardar o fechamento do ngen antes de desconectar. Se você criar o script na pasta Windows e atalho para ele na área de trabalho, também poderá usar o Prompt de Comando ou Powershell ou a caixa de diálogo Executar para executá-lo conforme necessário (antes de desconectar / após uma atualização).
Outra opção que deve funcionar é usar uma tarefa agendada para executar o script acima. Execute-o na inicialização, sem um usuário conectado, como administrador. Se o seu laptop tiver permissão para instalar atualizações durante a noite e puder reiniciar, isso funcionará bem.
Para executar o ngen, você só precisa de um dos seguintes comandos, use a primeira / mais adequada opção para seu sistema:
.Net 4 ou superior em 64 bits
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems
.Net 4 ou superior em 32 bits
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems
.Net 3 ou menos em 64 bits
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executeQueuedItems
.Net 3 ou menos em 32 bits
C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executeQueuedItems
Abaixo está a saída mínima que você obtém do ngen quando não há itens na fila:
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.
Quando o ngen.exe é executado, executeQueuedItems
ele o forçará a executar todas as tarefas pendentes o mais rápido possível. Normalmente, o ngen roda em um thread de segundo plano de baixa prioridade (e aparentemente inicia apenas aleatoriamente), com a ideia de que não deve passar fome outros processos da CPU - embora isso nem sempre funcione. Executar o ngen interativamente é mais rápido do que deixá-lo em segundo plano - mas afetará mais o desempenho. Quanto tempo leva depende do seu hardware e quantas / quais imagens nativas precisam ser recompiladas.