SharpDXのソースコードを見て、自分で解決策を見つけることができます。 とにかく、この問題で自分自身を見つけました。私はソースコードを見てきました。それから は、ここRun
のコードは次のとおりです。while
で
public static void Run(Control form, RenderCallback renderCallback, bool useApplicationDoEvents = false)
{
if (form == null)
throw new ArgumentNullException("form");
if (renderCallback == null)
throw new ArgumentNullException("renderCallback");
form.Show();
using (var renderLoop = new RenderLoop(form) { UseApplicationDoEvents = useApplicationDoEvents })
while (renderLoop.NextFrame())
renderCallback();
}
継続するための条件があります。示された、コードがループ内で非常に簡単です初期のポスターの一つとして
private static bool cancelLoop = false;
public static void Run(Control form, RenderCallback renderCallback, bool useApplicationDoEvents = false)
{
if (form == null)
throw new ArgumentNullException("form");
if (renderCallback == null)
throw new ArgumentNullException("renderCallback");
form.Show();
using (var renderLoop = new RenderLoop(form) { UseApplicationDoEvents = useApplicationDoEvents })
while (renderLoop.NextFrame() && !cancelLoop)
renderCallback();
cancelLoop = false;
}
public static void CancelRun()
{
cancelLoop = true;
}
これはかなりです。特にSharpDXでは、 'm_RenderForm.Close()'を使ってフォームを閉じなければなりませんでした。 – Cylindric