不同的类,不同的过程

时间:2012-07-12 13:46:42

标签: c# process

简单地说,一个控制台应用程序包含以下三个类,

namespace Stackoverflow
{
    public class Program
    {
        public static void Main ( string [ ] args )
        {
            new Consumer ( );
            new Provider ( );

            Console . WriteLine ( "Exit ..." );
            Console . ReadKey ( );

        }
    }

    public class Consumer
    {
        public Consumer ( )
        {
            using ( Process Process = Process . GetCurrentProcess ( ) )
            {
                Console . WriteLine ( "Consumer : " + Process . ProcessName );
            }
        }
    }

    public class Provider
    {
        public Provider ( )
        {
            using ( Process Process = Process . GetCurrentProcess ( ) )
            {
                Console . WriteLine ( "Provider : " + Process . ProcessName );
            }
        }
    }
}

输出如下,

Consumer : Stackoverflow.vshost
Provider : Stackoverflow.vshost
Exit ...

问题:
我可以将每个类附加到不同的过程,而不将它们分成不同的解决方案,尤其是Provider&消费者阶层?
它用于测试目的。移动代理相关测试。

提前致谢。
的问候,

4 个答案:

答案 0 :(得分:1)

您可以做的最好的事情就是在不同的主题中开始每个班级。

您无法在当前流程中“创建”新流程。

答案 1 :(得分:1)

我不确定这是否会完全符合您的要求,但您可以在执行主应用程序时将代码加载到不同的AppDomain中。以下MSDN Article包含有关完整示例的信息。

来自MSDN Article on AppDomain's

  

应用程序域提供灵活且安全的隔离方法   运行应用程序。

答案 2 :(得分:0)

通过定义必须在程序运行时执行哪个具体类来运行单独的进程。 要定义它,您可以使用简单的命令行参数。 所以你的程序读取命令行参数ande决定运行哪种类型。

例如:

    public static void Main(string[] args)
    {
        if(args[0] == "consumer") 
          //run consumer 
        else 
          //run provider (as default)

    }

希望这会有所帮助。

答案 3 :(得分:-1)

简单的错误。您没有添加{0}'。为你固定:

public class Program
{
    public static void Main(string[] args)
    {
        new Consumer();
        new Provider();

        Console.WriteLine("Exit ...");
        Console.ReadKey();

    }
}

public class Consumer
{
    public Consumer()
    {
        using(Process p = Process.GetCurrentProcess())
        {
            Console.WriteLine("Consumer : {0}", p.ProcessName);
        }
    }
}

public class Provider
{
    public Provider()
    {
        using(Process p = Process.GetCurrentProcess())
        {
            Console.WriteLine("Provider : {0}", p.ProcessName);
        }
    }
}

输出:

Consumer : SOF
Provider : SOF
Exit ...