我创建了一个单例类,如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace EnergyManager
{
public class Singleton
{
private static Singleton istanza;
public static Services Service;
private Singleton(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (args.Length == 0)
{
Services.BehaviourType ProgramBehavior = new Services.BehaviourType();
ProgramBehavior = Services.BehaviourType.NationalProviderConsole;
Service = Services.Instance(ProgramBehavior);
Application.Run(Service.SelectedFormTabs);
}
else
{
Service.ModifyTerminal(Convert.ToInt32(args[0]), Convert.ToInt32(args[1]), Convert.ToInt32(args[2]));
}
}
public static Singleton Instance(string[] args)
{
if (istanza == null)
{
istanza = new Singleton(args);
}
return istanza;
}
}
}
我想要做的是,当args不为null时,它会收到类Services的当前状态,并继续处理该状态。
此类单例由Program.cs调用
static void Main(string[] args=null)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Singleton Sing = Singleton.Instance(args);
}
这是切入点。支持exe被称为Test.exe。
问题是,工作情况如下: 我首先运行没有命令行参数的Test.exe,而不是在类singleton中创建实例Service。然后我再次使用一些命令行参数运行Test.exe。因此,当在Program.cs中调用Singleton.Instance(args)时,在类Singleton中它输入if的else条件,但是服务没有实例化。这是因为我运行的两个exe看不到彼此的状态。如何以这样的方式修改代码:当我第二次运行Test.exe时,它会获得我第一次运行的Test.exe的状态?
答案 0 :(得分:0)
您可以使用内存映射文件。这就像将状态写入文件但使用虚拟内存并且可以由多个进程访问。见Memory Mapped Files (.Net)。您还可以查看此Example,为您提供有关如何操作的指南。
答案 1 :(得分:0)