私はブロックしているC#Interop経由で外部メソッドSaveCurrentDocument()
を実行しています。そのメソッドはダイアログボックスをポップアップしてユーザーに「名前を付けて保存」を要求します。このウィンドウに何かを自動的に入力し、OKを押す必要があります。私の問題は、メソッドがブロックされていることです。だから私は、次の操作を行うことはできません。ブロッキングメソッドの実行中に強制的に制御を戻します。
SaveCurrentDocument(); // this is blocking
SendKeys(savePath);
SendKeys("{ENTER}");
どのように強制的にブロッキングメソッドから制御を戻すのですか?私の現在の計画は、BackgroundWorker
を開始し、そのコールバック内でメソッドを実行することで、ワーカーをブロックしますが、私のメインスレッドはブロックしませんでした。より良い方法がありますか?