none
Main()方法里使用Process问题 RRS feed

  • 问题

  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;
    using System.ComponentModel;
    using System.IO;
    
    namespace testMain1
    {
        class Program
        {
    
            static void Main(string[] args)
            {
                string path = Directory.GetCurrentDirectory();
                Process pro = new Process();
                pro.StartInfo.FileName = path + "\\testMain1.exe";
                pro.StartInfo.Arguments = "girl good!";
                pro.StartInfo.UseShellExecute = false;
                pro.Start();
    
                switch (args[0])
                {
                    case "boy":
                        Console.WriteLine("hello boy!");
                        break;
                    case "girl":
                        Console.WriteLine("hello girl!");
                        break;
                    default:
                        Console.WriteLine("hi, man!");
    
                        break;
                }
                Console.WriteLine("args[1] value is :" + args[1]);
                Console.ReadLine();
            }
        }
    }
    会进入无限循环状态,能详细解释下为什么嘛?本人理解不透彻,有点模糊,请指教~
    2013年9月12日 7:33

答案

  • 您好,
    那應該將那段代碼分到2支程式之中,如下,

    //ConsoleApplication1
    static void Main(string[] args)
    {
    	
    
    	switch (args[0])
    	{
    		case "boy":
    			Console.WriteLine("hello boy!");
    			break;
    		case "girl":
    			Console.WriteLine("hello girl!");
    			break;
    		default:
    			Console.WriteLine("hi, man!");
    
    			break;
    	}
    	Console.WriteLine("args[1] value is :" + args[1]);
    	Console.ReadLine();
    }
    	
    //ConsoleApplication2 為了方便,可將 ConsoleApplication1 專案加入參考,這樣 建置專案時,會一併將 ConsoleApplication1.EXE 輸出 
    static void Main(string[] args)
    {
    	string path = Directory.GetCurrentDirectory();
    	Process pro = new Process();
    	pro.StartInfo.FileName = path + "\\ConsoleApplication1.exe";
    	pro.StartInfo.Arguments = "girl good!";
    	pro.StartInfo.UseShellExecute = false;
    	pro.Start();
    }	


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2013年9月12日 8:05

全部回复

  • 您好,

    這當然会进入无限循环状态,因為程式一起來就再呼叫自已起來Run,然後下一個Process就再呼叫自已起來Run,然後就這樣一直Run下去!

    如果您想在VS.NET中測試輸入的參數,

    請選擇專案屬性,Debug的Tab中,Start Options的Command line arguments中輸入,如下圖所示,


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    • 已编辑 亂馬客 2013年9月12日 7:46 add image
    2013年9月12日 7:43
  • 你好,

    感谢的方案,这个我会,我就是想试试Main()里用Process的效果~

    2013年9月12日 7:54
  • 您好,
    那應該將那段代碼分到2支程式之中,如下,

    //ConsoleApplication1
    static void Main(string[] args)
    {
    	
    
    	switch (args[0])
    	{
    		case "boy":
    			Console.WriteLine("hello boy!");
    			break;
    		case "girl":
    			Console.WriteLine("hello girl!");
    			break;
    		default:
    			Console.WriteLine("hi, man!");
    
    			break;
    	}
    	Console.WriteLine("args[1] value is :" + args[1]);
    	Console.ReadLine();
    }
    	
    //ConsoleApplication2 為了方便,可將 ConsoleApplication1 專案加入參考,這樣 建置專案時,會一併將 ConsoleApplication1.EXE 輸出 
    static void Main(string[] args)
    {
    	string path = Directory.GetCurrentDirectory();
    	Process pro = new Process();
    	pro.StartInfo.FileName = path + "\\ConsoleApplication1.exe";
    	pro.StartInfo.Arguments = "girl good!";
    	pro.StartInfo.UseShellExecute = false;
    	pro.Start();
    }	


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2013年9月12日 8:05
  • 你好,

    OK~

    谢谢提点~自己写程序还是有点死脑筋,望再接再厉~

    2013年9月12日 8:23