6

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

如果代码必须是非托管的,这是可以接受的。

询问的原因是,这可能是解决在显示任何 UI 元素之前调用 SetCurrentProcessExplicitAppUserModelID 问题的一种方法(如在Windows 任务栏中对单独的进程进行分组中所述

4

2 回答 2

13

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

于 2012-12-19T05:28:36.617 回答
2

静态构造函数将在 Main 之前执行,但前提是该类实际上被某些东西引用。例如:

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

...
static void Main(string[] args)
{
    Console.WriteLine("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 。

于 2012-12-19T05:43:30.613 回答