在.NET的Main()方法之前执行代码

时间:2012-12-19 05:24:55

标签: c# c++ .net

是否可以在.NET Main method之前执行任何用户提供的代码?

如果代码必须不受管理,那将是可以接受的。

问的原因是,这可能是解决在显示任何UI元素之前调用SetCurrentProcessExplicitAppUserModelID的问题的方法(如Grouping separate processes in the Windows Taskbar中所述)

2 个答案:

答案 0 :(得分:10)

在C#中,您可以向包含main方法的类添加静态构造函数。静态构造函数中的代码将在main之前执行。

答案 1 :(得分:1)

静态构造函数将在Main之前执行,但仅当该类实际被某些东西引用时才会执行。例如:

class ClassWStaticCon
{
    static ClassWStaticCon()
    {
        Console.WriteLine("Hello world!");
    }
}

...
static void Main(string[] args)
{
    Console.WriteLine("Hello main.");
}

将打印:

  

Hello main。

class ClassWStaticCon
{
    public static int SomeField;
    static ClassWStaticCon()
    {
        Console.WriteLine("Hello world!");
    }
}

...
static void Main(string[] args)
{
    ClassWStaticCon.SomeField = 0;
    Console.WriteLine("Hello main.");
}

将打印:

  

你好世界!你好主要。

如果你想控制执行的顺序,那么在一个静态的“初始化所有预先主要的东西”类中使用一个行动队列委托http://msdn.microsoft.com/en-us/library/018hxwa8.aspx