C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.87596 の関連記事表示

<< 0 >>
■87596  shellメソッドとProcessクラスの違い
□投稿者/ k3user -(2018/06/12(Tue) 11:13:20)

    分類:[.NET 全般] 


    shellメソッドとProcessクラスとで
    スピードに大きな違いがあるのでしょうか?

    以下のような環境で
    プロセスA→プロセスCの処理を行うとプロセスCの起動〜終了
    まで20秒程度かかります。
    プロセスC自体はそこまで時間のかかる処理を行っていないので
    shellメソッドを使用することに問題があるのでは?
    と思い調べては見ましたが、情報が見当たりませんでした。

    何か情報等ございましたらご教示のほどよろしくお願いいたします。


    ●プロセスAの概要
    ・Exe形式(.NetFramework4.6でビルド)
    ・定周期でDBの監視を行い、プロセス起動要求があればshellメソッドを使用してプロセスCを起動

    ●プロセスBの概要
    ・Exe形式(.NetFramework4.6でビルド)
    ・要求されたプログラムをProcessクラスを使用してプロセスD起動

    ●プロセスCの概要
    ・Exe形式(.NetFramework4.6でビルド)
    ・OracleDataAccess.dllを使用してバッチ処理を行う。
    ・単体(デバッグ実行)で3秒程度で終了

    ●プロセスDの概要
    ・Exe形式(VB6で作成されたフォームアプリ)


    ●動作環境
    OSバージョン:Windows Server2012
    フレームワーク: .NetFramework4.6
    ビルド環境:Visual Studio2015
親記事 /過去ログ150より / 関連記事表示
削除チェック/

■87599  Re[1]: shellメソッドとProcessクラスの違い
□投稿者/ 魔界の仮面弁士 -(2018/06/12(Tue) 11:45:45)
    No87596 (k3user さん) に返信
    > shellメソッドとProcessクラスとで
    > スピードに大きな違いがあるのでしょうか?

    Microsoft.VisualBasic.Interaction.Shell メソッドと
    System.Diagnostics.Process クラス(の Start メソッド)の比較でしょうか?

    機能的には Process の方が多いので、手続き的には Shell の方が単純ですが、
    実際の速度差は、実環境で試さないと分からないことなので、
    ご自身で確認されるのが一番かと思いますよ。


    ちなみに前者(Shell)は、CreateProcess API による呼び出しを行います。
    https://msdn.microsoft.com/ja-jp/library/cc429066.aspx


    後者は、PprocessStartInfo.UseShellExecute を指定した場合には
    ShellExecuteEx API による呼び出しを行います。
    https://msdn.microsoft.com/en-us/library/windows/desktop/bb762154.aspx

    ただし UseShellExecute が意図的に false にされていた場合には、
    CreateProcess もしくは CreateProcessWithLogonW API に切り替わります。
    https://msdn.microsoft.com/ja-jp/library/cc429072.aspx


    > プロセスA→プロセスCの処理を行うとプロセスCの起動〜終了
    > まで20秒程度かかります。
    ウィルス対策ソフトなどといった、プロセス監視を行っているソフトウェアを
    一時的に無効化して試した場合も、特に変化は無いでしょうか。

    また、起動されたプロセスC の優先度が低くなっていたりはしないでしょうか。
    たとえば、タスク スケジューラーによる起動が行われていた場合、
    最近の OS だと、優先度が低めに設定されることになります。
    https://www.skyarch.net/blog/?p=2616
記事No.87596 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87601  Re[2]: shellメソッドとProcessクラスの違い
□投稿者/ k3user -(2018/06/12(Tue) 14:31:37)
    魔界の仮面弁士様

    返信ありがとうございます。

    これから調査を行うので解決には至っていませんが、取り急ぎお礼申し上げます。

    >ウィルス対策ソフトなどといった、プロセス監視を行っているソフトウェアを
    >一時的に無効化して試した場合も、特に変化は無いでしょうか。
    プログラムを実行しているPCにはSymantec EndPoint Protectionが常駐しており
    これを停止した状態で試してみようと思います。

    >また、起動されたプロセスC の優先度が低くなっていたりはしないでしょうか。
    >たとえば、タスク スケジューラーによる起動が行われていた場合、
    プロセスA→プロセスCに関してですが、プロセスAはタイマーをセットして(5秒おき)DBを監視して
    レコード内にある「プログラム実行要求FLG」が1であれば指定したプログラムを起動するというものです。

    実際のプログラムは現在別のテスト中のため動かせないので、サンプルプログラムを作成し、
    挙動を確認してみようと思います。

記事No.87596 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87632  Re[3]: shellメソッドとProcessクラスの違い
□投稿者/ k3user -(2018/06/15(Fri) 08:40:40)
    お世話になります。

    現在も詳しく調査中ですが、プロセスの呼び出しの
    問題ではなくその他の業務ロジック自身に問題が
    あることが疑わしくなってきました。
    よって本質問は解決とさせてください。

    お騒がせしてしまい申し訳ございませんでした。
記事No.87596 のレス / END /過去ログ150より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -