Flash コントロールを使用してムービーを再生する C# プログラムがあります。私が抱えている問題は、ムービーが完全に読み込まれる前に Actionscript にメッセージを送信しようとすると、エラーが発生することです。この問題を解決するために、続行する前に 1 秒待機するようにタイマーを設定しました。別のスレッドで実行しているため、別の問題が発生しました。この問題を解決するために、タイマー イベント ハンドラーで Invoke を使用してみましたが、何らかの理由で実際にメソッドを呼び出していないようです。CPU の 50% がプロセスによって使用されていることがわかりますが、Invoke ステートメントから戻ってくることはありません。私は多くの質問を見て、Invoke メソッドと BegainInvoke メソッドを使用する 4 つまたは 5 つの異なる方法を試しました。私のアプリケーションの設計では、フォームをインスタンス化するメイン クラスがあります。フォームのコンストラクターが読み込まれ、ムービーの再生が開始されます。メイン クラスはタイマーを設定し、問題が発生するフォームを表示しようとします。
public MyClass()
{
demoForm = new DemoForm();
timer.Elapsed += new ElapsedEventHandler(engine);
timer.Interval = 1000;
timer.Enabled = true;
for (int i = 0; ; i++)
counter++;
}
private void engine(Object source, ElapsedEventArgs e)
{
timer.Enabled = false;
if (demoForm.InvokeRequired)
{
demoForm.BeginInvoke(new MethodInvoker(sendNextMessage));
}
else
{
sendNextMessage();
}
}
private void sendNextMessage()
{
// It never gets here!!!
}