当应用程序运行时,C#Main Form对象为null

问题描述

我已经创建了2个应用程序1个WinForms和1个控制台应用程序,并且我试图使用控制台应用程序在WinForms应用程序中调用一个方法,但是由于某种原因主表单对象为null。

Winforms应用程序:

     namespace ABC
     {
        public class WinFormsApp
        {
            public static WinFormsApp instance = null;
            public WinFormsApp()
            {
                 instance = this;
                 InitializeComponent();
            }
        }
        public static class BridgeClass
        {
            public static void Demo()
            {
                string msg = "no";
                if (WinFormsApp.instance != null)
                     msg = "yes";
                System.Windows.Forms.MessageBox.Show(msg);
             }
        }
    }

控制台应用程序:

    public static void Main()
    {
        Assembly SampleAssembly = Assembly.LoadFrom("ABC.exe");
        MethodInfo Method = SampleAssembly.GetType("ABC.BridgeClass").GetMethod("Demo");
        if (Method != null)
        {
            Method.Invoke(null,null);  
        }
    }

当控制台应用程序调用Winforms方法时,弹出消息不显示任何信息,但我已经使用断点检查了实例变量是否已正确初始化。

注意:当从控制台应用程序调用Winforms应用程序时,应该使用main方法来运行它。

有人可以指出我在做什么错吗?

解决方法

我无法添加评论...所以我在这里回答。您尚未创建ABC的实例,因此无法调用该方法。看一下Activator,您可以使用它创建实例。 Here是一个例子。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...