遵循这个答案 Preload all assemblies (JIT)
预加载应用程序的所有程序集的好方法。可能是
Private Sub PreLoadJit()
For Each type In Assembly.GetExecutingAssembly.GetTypes
For Each method In type.GetMethods((BindingFlags.DeclaredOnly _
Or (BindingFlags.NonPublic _
Or (BindingFlags.Public _
Or (BindingFlags.Instance Or BindingFlags.Static)))))
If (((method.Attributes And MethodAttributes.Abstract) _
= MethodAttributes.Abstract) _
OrElse method.ContainsGenericParameters) Then
continue For
End If
System.Runtime.CompilerServices.RuntimeHelpers.PrepareMethod(method.MethodHandle)
Next
Next
End Sub
但是当启动方法时? 我想可能是MyBase.Load方法中的第一个方法,但不知道我是不是。
关注这篇较旧的文章
https://www.codeproject.com/Articles/31316/Pre-compile-pre-JIT-your-assembly-on-the-fly-or-tr
作者使用线程来运行该方法。 如果在mainthread中调用一个方法来构建pre-jit,或者将它放在一个单独的线程中呢?