2016-10-24 2 views
1

文字通り、このWebサービスには、多くの作業を行うデスクトップアプリケーションを開始するはずの1行のコードがあります。私はデスクトップアプリケーションを選択しました。なぜなら、作業に20時間以上かかることがありました。ウェブサービスだけを選択すると、アプリケーションプールのリサイクルスケジュールによって私にカーブボールが投げられる可能性があります。 Webサービスによって開かれたWinformsを閉じるvb .NET

この

は仕事が、私が試した、バックグラウンドワーカー完了したイベントで、デスクトップアプリケーション(リサイズ)で終了した後に自分のWebサービス

Process.Start("C:\ReTransPrograms\RateAnalytics\AnalyticsBatchRateDesktop.exe", arguments) 

...です

Application.Exit() 

me.close() 

作業が完了した後にタスクマネージャをチェックすると、アプリケーションはまだ実行されています。何か不足していますか?パーミッション?セキュリティ?

デスクトップアプリケーションをローカルで実行すると、終了時に終了するはずです。

AppPoolはLocalSystemとして実行されています。

+0

アプリケーションプールは、Webサービスが実行されているディレクトリに非常に制限されています。あなたのアプリがフォルダやレジストリに書き込んでいる場合、それはスタックされている可能性があります。 sysinternalプロセスappを使用して診断する –

+0

処理を実行するWindowsサービスを作成する方が良いかもしれませんし、残り時間/残り時間の見通しに関する何らかのメトリックを照会する何らかの方法があります。次に、Windowsサービスに仕事を与えるための方法をいくつか作成します。 –

+0

私はAndrewについて考えましたが、Webサービスから開始されているこのプログラムの複数のインスタンスが必要です –

答えて

0

プロセスIDを追跡し、終了時に終了します。

Private Sub Main() 

    ProcessID = Process.Start("C:\ReTransPrograms\RateAnalytics\AnalyticsBatchRateDesktop.exe", arguments).ID 

End Sub 

それがコールをクローズする時間です:

System.Diagnostics.Process.GetProcessById(ProcessID).Kill() 
+0

コンピュータにprocessIDを再利用させる可能性はありますか? –

+0

プロセスIDは、プロセスが終了するとすぐにリサイクルされます。 – Neelix

関連する問題