1

わかりました、exe をトリガーするサンプル Web サイト (Site.aspx) を作成しました。exeを実行できました。だから私が得ている問題は、exeをトリガーするたびに..プロセスがまだ終了していなくても、proc.HasExitedとproc.WaitForExitをバイパスしてアラートメッセージがすぐにポップアップすることです

protected void Button1_Click(object sender, EventArgs e)
{

        string run = @"C:\Documents and Settings\blabla\Desktop\Test\Test.exe";
        ProcessStartInfo start = new ProcessStartInfo();
        start.FileName = run;
        start.UseShellExecute = false;
        Process proc;
        proc = Process.Start(start);

            while (!proc.HasExited)
            {
            }
            proc.WaitForExit();        
            Response.Write("<script>alert('done')</script>");

}

OK、これは EXE IM RUNNING
TEST.EXE です

static void Main(string[] args)
        {

            int i = 0;
            while (i < 5)
            {
                Console.Write("While statement ");
                // Write the index to the screen.
                Console.WriteLine(i);
                // Increment the variable.
                i++;
                Thread.Sleep(2000);
            }


        }

エラーはありません。ボタンをクリックしてexeを実行できましたが、exeが終了するのを待つ代わりに、サイトは他のコードに直接進みます

4

2 に答える 2

1

Web サービス プロセス (IIS) から GUI アプリを実行しようとしています。少なくとも 2 つの制限により、おそらく失敗します。

  • サービスからGUIが起動されることはありません
  • ファイルやフォルダ自体のアクセス権の問題の可能性があります。

そうです、あなたは正しいです、プロセスは開始されたときと同じように「終了」します。

また、IIS の下にあるコードで何かを待機することは、悪い考えです。一部でも

Thread.Sleep(10);

呼び出します。

于 2013-10-17T09:32:44.147 に答える