前提
powershellで、永久ループで、処理するシステムを作っています。
一つの処理が終わると60秒スリープし、また処理を始めるという繰り返しです。
処理中に、if文による条件に一致したら、ログ記録のため、フォームにその時刻を追記する、ということをやりたいです。
フォーム表示スクリプトと、永久ループの処理スクリプトは、別々に作成済みです。
実現したいこと
フォーム表示スクリプトと、永久ループの処理スクリプトを、合体させたいです。
発生している問題
フォームに表示するスクリプトは、ShowDialog() の時点で、処理が止まってしまいます。
どのように合体させたらよいでしょうか?
該当のソースコード
・フォーム表示スクリプト(概略)
powershell
1$form = New-Object System.Windows.Forms.Form 2$Box = New-Object System.Windows.Forms.ListBox 3$form.Controls.Add($Box) 4$form.ShowDialog() #←ここで止まってしまう。
・永久ループの処理スクリプト(概略)
powershell
1whlle(1){ 2 # ~~ここに、時間がかかる、長い処理~~ 3 if ($flag -eq 1){ 4 $d = get-date 5 $Box.Items.Add($d) 6 } 7 Start-Sleep -s 60 #処理後、60秒間スリープ。 8}
試したこと
イベントを発生させればよいのかと思いますが、
Timer.intervalだと、等しい時間間隔のイベント発生になってしまいます。
処理が終わったら60秒後にイベントが発生するようにしたいです。
補足情報
powershell 5.1
Windows 10
以上、ご教示いただければ幸いです。
ShowDialog は止まります。
Show なら止まりませんが、それが意図した動きかどうかこの質問からは判断できません。

回答1件
あなたの回答
tips
プレビュー