tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルプログラムの実行を一時的に軽負荷にするには?
記事No753
投稿日: 2004/02/23(Mon) 16:02
投稿者fn
[OSのVer]:WindowsXP    [VBのVer]:VB.NET   2002
タイトルの件、良く分からないので教えてください。
いま、VBからVBのプログラム(複数)を実行させようとしています。
各々のプログラム、プロジェクトは違う実行ファイルです。
簡単にいうと、親プログラム(AAA.exe)が、子プログラム(111.exe,222.exe,333.exe,444.exe)を
順番に実行させようとしています。
そこで、AAA.exe のコードを
for i = 1 to 4
  子プログラムを実行するサブルーチン(引き数 i)
  do
    if isRun = false exit do
  loop
next i
としており、isRun で, i=1で111.exe が終了したら、isRun が false 、i=2で 222.exe が実行と
いったような動きをします。
isRun は、子プログラム実行時に true 終了したら false になるよう設計しています。

ここで問題は、親プログラムの do〜loop の処理負荷が高くなるため、
親プログラムのフォームが真っ白になってフリーズし、
子プログラムの実行時間が大変遅くなってしまいます。

やりたいのは、do〜loop内で1秒間隔ぐらいで isRun を判定し、
親プログラムの処理負荷軽減と、
子プログラムの実行速度アップです。

よろしくお願いします。

[ツリー表示へ]
タイトルRe: プログラムの実行を一時的に軽負荷にするには?
記事No755
投稿日: 2004/02/23(Mon) 17:39
投稿者よねKEN
> としており、isRun で, i=1で111.exe が終了したら、isRun が false 、i=2で 222.exe が実行と
> いったような動きをします。
> isRun は、子プログラム実行時に true 終了したら false になるよう設計しています。

その前に、どのように子のプログラムを起動していて、
どのように終了したかを判断し待っているのでしょうか?

Processクラスを使用して起動していれば、
WaitForExitメソッドで子プロセスの終了を待機できますので、
ループ自体がいらないと思います。

[ツリー表示へ]
タイトルRe^2: プログラムの実行を一時的に軽負荷にするには?
記事No756
投稿日: 2004/02/23(Mon) 21:55
投稿者fn
[OSのVer]:Windows    [VBのVer]:VB.NET  
>
> その前に、どのように子のプログラムを起動していて、
> どのように終了したかを判断し待っているのでしょうか?
>
Processクラスを使用して起動しています。
Process1.StartInfo.FileName=program(i)
Process1.Start()

Process1_Exited()で終了を判断して,isRun=falseにしています。

> Processクラスを使用して起動していれば、
> WaitForExitメソッドで子プロセスの終了を待機できますので、

WaitForExitメソッドの記述がよくわかりません。

> ループ自体がいらないと思います。
program(i)に起動したいプログラムのファイル名が入っているので、
ループはいると思うのですが、、、

サンプルのプログラム例を教えていただいたら大変助かります。

[ツリー表示へ]
タイトルRe^3: プログラムの実行を一時的に軽負荷にするには?
記事No757
投稿日: 2004/02/24(Tue) 09:53
投稿者fn
> > Processクラスを使用して起動していれば、
> > WaitForExitメソッドで子プロセスの終了を待機できますので、
>
> WaitForExitメソッドの記述がよくわかりません。
>
process1.WaitForExit()でやりたいことができました。
よねKENさん、ありがとうございました。

[ツリー表示へ]