-1

メインアプリケーションに仕事をさせるのではなく、なぜこれをやろうとしているのかについては詳しく説明しません。今の方がやりやすいと思います。しかし、今後この手法を使用するつもりはありません。

私の場合、メイン フォームには別のフォームを開くボタンがあります。2 番目のものでは、量を調整し、一時停止し、再開し、コンソール アプリケーションの作業を停止できます (まったく役に立たないように聞こえますが (おそらくばかげているように聞こえます)、前述したように、その理由については詳しく説明しません)。これは、アプリケーションがプログラム全体のすべての変数とリソースにアクセスできる必要があることを意味し、その逆も同様です。

メイン フォームから新しいフォームを起動する方法は知っていますが、コンソール アプリケーションを起動する方法はわかりません。

編集:

言い忘れていましたが、コンソール アプリケーションはソリューションの一部です。

4

4 に答える 4

2

あなたの要件は少しあいまいです。「アプリケーションは、プログラム全体のすべての変数とリソースにアクセスできる必要があり、その逆も同様です」。「変数とリソース」はプロセス間で共有できません。代わりに、何らかの形式のプロセス間通信が必要になります。

コンソール アプリが呼び出し元のフォーム アプリに RPC が成功したことを伝えるだけでよい場合は、コンソール アプリで終了コードを使用します。次を参照してください:コンソール アプリケーションから .NET のサービスに値を返すにはどうすればよいですか?

それ以外の場合、これは以前に回答されています: Getting the output from Console window into Winform application

于 2012-10-23T21:19:37.370 に答える
1

Main を直接呼び出すことができます。ただし、これを UI スレッドで直接行うことには注意してください。

SomeConsoleApp.Main(new string[]{"-O", "File 1.txt", "-some-parameter"});

または、exeしかない場合は、次のことができます:

System.Diagnostics.Process.Start("someconsoleapp.exe");
于 2012-10-23T20:48:43.603 に答える
1

コンソール エミュレーターを作成する (時間がかかり、正しく行うのが難しい) か、別のプロセスで cmd.exe を起動し、リモート プロシージャ コール(または別のプロセス間通信方法)を使用して 2 つのプロセス間で通信する必要があります。

于 2012-10-23T20:50:27.987 に答える
1

2 つのプロセス間で通信する場合は、次のライブラリを参照してください。

https://github.com/TheCodeKing/XDMessaging.Net

あるアプリから別のアプリにメッセージを送信できます。たとえば、App1 がチャネル「randomkey」でメッセージ「stop」を ConsoleApp1 に送信すると、ConsoleApp1 はチャネル「randomkey」でリッスンし、「stop」メッセージをインターセプトして現在の処理を停止できます。

コンソール ウィンドウを開くだけの場合は、System.Diagnostics.Process.Start(); を使用します。

于 2012-10-23T20:52:48.173 に答える