C# 更改WPF App.xaml.cs文件中的Main方法

C# 更改WPF App.xaml.cs文件中的Main方法,c#,wpf,main,C#,Wpf,Main,目前,我在WPF项目中更改了主要方法,如下所示: public static void Main() { // Call Log4net configuration to configure all Appenders log4net.Config.XmlConfigurator.Configure(); // Check if Application is already running, if it is running - Kill if (System.

目前,我在WPF项目中更改了主要方法,如下所示:

public static void Main() 
{
    // Call Log4net configuration to configure all Appenders
    log4net.Config.XmlConfigurator.Configure();
    // Check if Application is already running, if it is running - Kill
    if (System.Diagnostics.Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetEntryAssembly().Location)).Length > 1) System.Diagnostics.Process.GetCurrentProcess().Kill();

    Controller.App app = new Controller.App();        
    app.InitializeComponent();
    app.Run();
}
我添加了一个方法调用来配置我的Log4Net框架,并检查我的应用程序的实例是否已经在运行

以前,我在MainWindow.CS文件->MainWindow构造函数中有这个方法

现在我很好奇,在应用程序的主方法中进行类似这两个方法调用的验证是否是常见/良好的做法,或者是否应该像我以前那样在MainWindow.CS中进行验证。
在主方法中是否存在这样做的问题。到目前为止,我的应用程序一切正常

我发现与其通过更改
Main()
来搞乱WPF应用程序的底层内部,不如重写
App.xaml.cs
中的
OnStartup()
方法

我在那里调用log4net的
Configure()
,并在那里执行许多其他特定于应用程序的配置操作,然后才允许显示主窗口


我发现,这可以避免构成WPF应用程序的底层布线出现问题,并从长远来看减少问题。

是的,这是非常有效的,我不止一次看到过这一点

通过在main中设置日志基础结构,您可以记录运行应用程序时可能出现的任何问题,例如,如果您的
App.xaml
中出现错误

此外,如果必须立即关闭WPF应用程序,则可以避免免费启动WPF应用程序,尽管在一般情况下这不应该是一个问题

至于您检测应用程序是否已经在运行并停止它的方式,这是非常“原始的”。)
执行此操作的标准方法是使用全局系统互斥,如果存在,则跳到

@Pragamteek:Thx的末尾,以获取有关我的“原始”关闭方式的提示。我会听从你的暗示。这只是我不久前使用的第一种方法,所以我从未改变过它,因为它是有效的。谢谢!