2017-12-16 17 views
0

私は、ユーザー名、パスワード、およびプロジェクト名をパラメータとしてプロセスを開始します。プロセスがすでに実行されている場合は、繰り返し同じプロセスを開始する必要はありません。プロセスはパラメータを受け入れませんか?

同じプロセス実行の繰り返しを避けるためにコードを使用しない場合、プロセスはすべてのパラメータを受け入れます。オブジェクトは、それはコンストラクタで呼び出しますcreated.meansとき

public SyncConnector(string username, string password, string projectname) 
    { 
     string thisprocessname = Process.GetCurrentProcess().ProcessName; 
     if (Process.GetProcesses().Count(p => p.ProcessName == thisprocessname) > 1) 
     { 
      _proc = Process.Start("doors.exe", "-u " + username + " -P " + password + " -project" + projectname); 
     } 

     while (_proc != null && !_proc.WaitForInputIdle(1000 * 60)) 
     { 
     } 
} 

このプロセスの開始: 以下は私のコードです。 パラメータをプロセスに正常に渡すにはどうすればいいですか? ありがとうございました...!

+1

あなたの質問を言い換えることができますか?私はあなたが期待している行動や実際にどのような行動をしているかを完全に理解しているとは思わない。 – souldeux

+1

'> 1'ではなく' <1'(または '== 0')でなければなりませんか? –

+0

hello @souldeux doors.exeがすでに実行されていて、同じアプリケーションを繰り返し起動したくない場合は、C#プロセスを使用してdoors.exeアプリケーションを起動します。 – vivek

答えて

1

プロセスが既に実行されている場合は、「パラメータ」を渡す方法がありません。実行時に情報を受け取ることができる必要があります。ソケット(Webサービスのようなもの)でリッスンしたり、モニタしているファイルから読み込んだり、Windowsメッセージ(旧式の学校ではなく)を使って読むことができます。 doors.exeがあなたが書いたものだと仮定すると、それはあなたにとって最良のものです。

+0

こんにちはDylan、初めてプロセスが実行されていないときに、そのプロセスにパラメータを渡したいのですが、プロセスを開始するかどうかをチェックするコードの最初の2行のためにエラーが表示されます。 – vivek

+0

他の人が指摘しているように、このコードの問題は、countが0よりも1ではないかどうかを調べる必要があるということです。これを修正すると、意図したとおりにパラメータでプロセスを起動できるはずです。 –

+0

カウントが0の場合、または私の場合は<1が機能していません。私は両方のアプローチを試みたが、私が望むものを得ない。 – vivek

関連する問題