ランニング
Process console = Process.Start("Client.exe", "-filename:" + fname + " -list:" + myList)
myList.ToString() を実行し、次のように変換します。
Client.exe -filename:testDoc -list:System.Collections.Generic.List`1[System.String]
これはあなたが達成したいことではありません。試す
Process console = Process.Start("Client.exe", "-filename:" + fname + " -list:" + String.Join(",", myList))
または似たようなもの。
アップデート
もちろん、そのプロセスにデータを渡すための、より洗練された方法を検討することもできます。一般的な方法は次のとおりです。
- データベース
- ファイルシステム (ファイル)
- WCF
アップデート
コメントで提供されたコンテキストを考えると、同期に使用されるデータベースを使用して、サーバー上で実行される完全に別の Windows サービス (ノンストップ、呼び出しなし) を選択します。
Tasks
列を持つテーブルを持つデータベースinput data
、output data
およびその他の必要なもの (日付やユーザー ID など)
- 処理対象のデータとしてそのテーブルに行を挿入する Web ページが表示されます
- Windows サービスが繰り返し (x 秒ごとに) 未処理のタスクをテーブルに照会し、タスクがあれば実行します。
output data
結果は列に保存されます
- ユーザー要求の Web ページで特定のタスクをクエリし、そのステータスを表示し、出力データがある場合はそれを表示します
これははるかに堅牢であり、ユーザー トラフィックの増加に合わせてより適切に拡張できます。複数のコアを利用するために、サービス自体が個別のタスクのワーカー スレッドを生成するのが理想的です。このようなアーキテクチャが整っていれば、パフォーマンスを最適化し、タスクを監視する方法がたくさんあります。