0

おはようございます。
これは変な質問だと思いますが、どうか辛抱してください! :-)

シナリオ
何年も前に、大きな COBOL アプリケーション (CblApp と呼びます) を処理する単純な C# コンソール アプリケーション (MyApp、myapp.exe と呼びます) を作成しました。
このアプリは通常、いくつかのファイルを読み取り、要求された作業 (Web サービスの呼び出しなど) を実行し、いくつかの出力ファイルを書き込みます。
CblApp との対話は、次のように機能します。

  • CblApp は myapp.exe を呼び出します (例: myapp.exe -i:readinputfilefile.xml -w:writerresults.xml)。
  • myapp.exe が閉じられるまで、CblApp は自身をブロックします (同期方法)。
  • myapp.exe が終了して閉じると、CblApp は結果ファイルを読み取ります

MyApp はプラグイン ベースであり、現在では 40 個のプラグイン、ログ記録、インターネット接続チェックなどを備えたモンスターです。毎回ゼロからロードするのは時間がかかるので、トレイアイコン付きの単一インスタンスアプリケーションとして機能する新しいバージョンを作成しました。
素晴らしいですが、CblApp はそれを使用できません: CblApp は myapp.exe と対話する方法を変更できません。
質問
質問: myapp.exe が閉じられていることを、実際に実行せずに CblApp にシミュレートできますか?
今、単一のインスタンスアプリを呼び出し、作業が完了するまで待機し、それ自体を閉じる偽の myapp.exe を作成しましたが、このソリューションは好きではありません。
誰かがこのもつれた質問を理解してくれることを願っています。:-)
ありがとう!
ナンド

4

1 に答える 1

2

コンソール アプリの代わりに Windows サービスを検討できます。

このサービスは一度開始すれば常にバックグラウンドで実行できるため、呼び出しごとにすべてを初期化する必要はありません。Windows サービスと通信するには、必要に応じてファイル、ソケット、またはデータベースを使用できます。

于 2012-06-22T10:03:00.017 に答える