ボタンをクリックした後、最初にサウンドファイルを再生し、再生後にタイマーを開始する GUI を作成しようとしています。
この動作を実現する最も簡単な方法は、GUI 内でサウンド ファイルを同期的に再生することです。このように、GUI は「ブロック」し、サウンド ファイルの再生が終了した後にのみタイマーを開始します。
問題は次のとおりです。
サウンド ファイルがこれほど長いとは予想していませんでしたが、一部のファイルは非常に長く、GUI に「プログラムが応答していません」と表示されます。
GUIをロックせずにサウンドを再生した後もタイマーを開始するにはどうすればよいですか?
タスクを使用することを考えていましたが、タスクが完了したかどうかを確認すると、おそらく GUI がロックされます。
これを機能させるにはどうすればよいですか?
更新:
このコードは別のスレッドで実行され、GUI でタイマーを開始するには、次のコードが使用されます (ここにある Marc Gravell が提供するソリューションを使用)
//start timer after playing sound source:
this.Invoke((MethodInvoker)delegate
{
if (!timer.Enabled)
timer.Start();
});