1

简单地说,一个具有以下三个类的控制台应用程序,

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 ...

问题:
我可以将每个类附加到不同的流程,而不将它们分成不同的解决方案,尤其是提供者和消费者类吗?
这是为了测试目的。移动代理相关测试。

提前致谢。
问候,

4

4 回答 4

1

你能做的最好的就是在不同的线程中开始每个类。

您不能在当前进程“内”创建新进程。

于 2012-07-12T13:48:39.993 回答
1

我不确定这是否会完全实现您想要实现的目标,但您可以在主应用程序执行期间将代码加载到不同的 AppDomain 中。以下MSDN 文章包含有关执行此操作的完整示例的信息。

来自 AppDomain 上的 MSDN文章

应用程序域提供了一种灵活且安全的方法来隔离正在运行的应用程序。

于 2012-07-12T13:54:55.643 回答
0

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

例如:

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

    }

希望这可以帮助。

于 2012-07-12T13:51:05.080 回答
-2

简单的错误。你没有添加{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 ...
于 2012-07-12T13:51:02.420 回答