- - PR -
Processクラスでのプロセス再利用について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-01-22 09:52
Processクラスを使用してあるアプリケーションを起動する際に、既存のプロセスリソースの再利用はどのような条件で起こるのかご存知の方いらっしゃいますでしょうか?
例えばIEの場合、IE自身の設定や、起動対象にファイル名URLを指定するのか、IExplorerを指定するのかなどで変わるようです(過去の記事などから)。 ここで、起動する対象が自作のアプリケーションの場合はどうなるんでしょう? なぜこれを知りたいかというと、自作のアプリケーションを起動する際に、プロセスの再利用をさせたくない(確実に新しいプロセスを起動したい)からです。 自作のアプリケーションは、実行ファイルは同一で、起動パラメータで様々な動作をするような構成です。 このため、引数はいろいろと変わりますが、起動する実行ファイルは常に同じになります。また、起動時に渡す起動ファイル名にも、実行ファイル名を直接指定します。 # 起動アプリも.NETのWindowsアプリケーションです。 なんとなく、何も考えずに対象アプリを作れば(DDE?とかに明示的に対応?しない、特に何もしない?この辺全然詳しくないのでかなりおかしいことを言ってるかもしれません)、プロセスの再利用は出来ないようになるような気がするんですが、実際のところどうなのかがいまいち確証がありません。 この辺詳しい方いらっしゃいましたらお願いします。 | ||||
|
投稿日時: 2004-01-22 10:41
便乗というか、おもしろいというか、ちょっとかかる現象があったので報告。
私はメールソフトにShuriken Pro 3、ブラウザにOpera 7を使っています。通常使うブラウザはOperaにしています。 現在作っているシステムで、Webアプリケーションでデータを扱うのですが、何らかのアクションでメールが送信されるようにしています。このメール中に、データにアクセスするためのURLが、「http://server/app.aspx?data=id」と記入されています。送信はテキスト形式ですが、Shurikenが「http:」で始まる文字列をURLと解釈し、HTMLのanchor要素のように表示します(つまりクリックしたらブラウザが起動してそのページが表示されると言うこと)。 今、送信されるメールのテストをしていて、おもしろいことが起きました。ブラウザが起動していない状態でリンクをクリックすると、Operaが起動します。「通常使うブラウザ」がOperaなので。ところが、IEが起動している状態でクリックすると、もう1枚IEが開いて、そこに表示されます。OperaとIEが両方表示されていても、IEがもう1枚開きます。Operaだけが起動している場合は、現在表示しているページがリプレースされます。 起動される「自作のアプリケーション」だけでなく、起動する側のアプリケーションの方にも、何らかの細工が必要なのでしょうか?? 例えば、エクスプローラの場合、ファイルをダブルクリックするとそのファイルを実行できるアプリケーションを起動します。Excelの場合、現在あるExcelインスタンスが利用されます。ところが、関連づけで「DDEを使用する」をチェックしていないと、複数のインスタンスが起動します。これは、Excelの側にDDEを利用するようにコーディングしてあって、エクスプローラはDDEを使用するかどうか選択しています。両方に細工されている、と言ってよいのではないでしょうか。 Shurikenの場合、IEのインスタンスがあるかどうかを見て、あれば利用し、なければ標準のブラウザを使用するようなメッセージを送信しているように思います。 | ||||
|
投稿日時: 2004-01-22 11:47
#私もそれほど詳しくはないのですが。。。^^;
同じプロセスで実行されることがあるのはアプリケーションに 関連づけられているリンクやファイルを開こうとした場合だけだと思います。 IE も Excel も、リンクやファイルを開こうとするとすでに実行されているプロセスで 開こうとしますが、アプリケーションを直接起動すれば別のプロセスで実行されます。 つまり、実行ファイルを指定すれば必ず別のプロセスで実行されると思います。 | ||||
|
投稿日時: 2004-01-24 19:57
返信が遅くなりました。
やっぱり、アプリ側で何かやってたりってのもいろいろあるみたいですね。
確かに、(アプリ側で何か特別な事でもやらない限り)こんな感じはします。 # っていうかそうじゃないと普通はプロセスの再利用なんて出来ないだろうし… 手元で試した限りではちゃんと新しいプロセスが起動できているので、とりあえずは特に何もしない事にします。 ありがとうございました。 |
1