複数の処理を同時に動かすには?


タイムリー  2006-01-17 18:25:18  No: 19702

複数の処理を同時に動かしたいのですがどうすれば
よいのでしょうか?

引数を渡して、SetCurretnDir のディレクトリ名を
変更を行って処理を行うEXEファイルを作成し、
その実行ファイルを、ShellExecuteで呼び出すと
同時処理が行われます。

この実行ファイルの部分を
スレッドで行おうとしたのですが。
動作が安定しません。
ひとつのスレッドでカレントディレクトリが
変更されると他のスレッドにもこのカレントディレクトリが
適用されるのではないでしょうか?
それとも、作り方が間違っているのでしょうか?

もし、スレッドが利用できないのであれば
DLLにするという方法は使えないのでしょうか?
それとも、やはり、ひとつのアプリケーション上には
カレントディレクトリはひとつしか存在
できないのでしょうか?


にしの  2006-01-17 19:39:43  No: 19703

1プロセスあたり、1つのカレントディレクトリとなります。
EXEを分けて別プロセスにするしかないかと。
# 1つのEXEで別プロセスとして起動するという手もありますが


えーと  2006-01-17 20:14:07  No: 19704

SetCurretnDir を設定できるということは、そこまでの絶対パスが分かってるのでしょう?
だったら、絶対パスで起動したらいいんじゃないでしょうか。


タイムリー  2006-01-18 18:51:06  No: 19705

にしのさんへ
># 1つのEXEで別プロセスとして起動するという手もありますが
1つのEXEの中で、別プロセスとしてスレッド処理ができる
ということなのでしょうか?

えーとさんへ
>絶対パスで起動したらいいんじゃないでしょうか
全て自作なら問題ないのですが
その先で別のプログラムを呼び出しているのですが
それに対してカレントディレクトリを指定しておかなければ
ならないので困っているんです。


にしの  2006-01-18 21:27:12  No: 19706

ShellExecuteの第5引数(だったと思いますが、未確認)に、実行するディレクトリを指定できますよ。

> ># 1つのEXEで別プロセスとして起動するという手もありますが
> 1つのEXEの中で、別プロセスとしてスレッド処理ができる
> ということなのでしょうか?
別プロセスであれば、単一スレッドで問題ないかと思いますが。
EXEの引数で判断して、ShellExecuteして終了するようなロジックがあれば可能かとおもいます。
ただ、ShellExecuteの引数でカレントディレクトリを指定できるのでそちらのほうが簡単かと。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加