SetProcessWorkingSetSizeとWindowsForms

NyaRuRuさんも自身の日記で何度か採り上げていたSetProcessWorkingSetSize(hProcess, -1, -1)によるワーキングセットの縮小指示だが、WindowsFormsアプリケーションにてこのAPIを呼ぶにはどのタイミングで呼ぶのが効果的なのだろう。(ベストの性能を期待するには使わないのがベストなのだろうが...)

このAPIはWindowsに対して対象プロセスのワーキング セットを最小サイズに縮めるように指示するが、呼び出しが早すぎるとWindowsによって縮められたページはアプリケーションにより再びロードされてしまうし、逆に呼び出しが遅すぎると未使用のページをリサイクルできなくなってしまう。

現時点では以下のようなメソッドをForm#ActivatedとForm#Deactivateで呼び出しているが

public static void TrimingWorkingSet()
{
    if (Environment.OSVersion.Platform == PlatformID.Win32NT)
    {
        Process proc = Process.GetCurrentProcess();
        SetProcessWorkingSetSize(proc.Handle, new IntPtr(-1L), new IntPtr(-1L));
    }
}
[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetProcessWorkingSetSize(IntPtr procHandle, IntPtr min, IntPtr max);

これが(このタイミングが)ベストだという根拠が全く無いのが嫌だ。