2012年10月22日月曜日

vb2010 Application.Restart()とStopWatchクラスを使ってみた


職場でApplication.Restart()を使ったら重複起動チェックに引っかかって2回目以降が起動してくれないのでメモ

初回の再起動では別プロセスで開いてくれるようだが、2回目以降は別プロセスにならない?(詳しい人教えてください)ようで、重複起動チェックに引っかかって再起動してくれなくなった。

そこで重複起動チェックの処理を修正することにしました。


最初はただのif文だったのを以下のように修正。
while UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0
thread.sleep(100)
i+=100
if i >3000 then
  exit while
end if
これで前プロセスの終了を3秒だけ待って起動できるようになった。
後でYさんからStopWatch使おうといわれ以下に修正。
Dim _stopWatch As New Stopwatch
_stopWatch.Start()
While  UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0
  Thread.Sleep(100)
  If _stopWatch.ElapsedMilliseconds > 3000 Then Exit While
End While
_stopWatch.Stop()

処理の実行時間を計るときは便利そうです。

0 件のコメント:

コメントを投稿