我有三个项目:
-客户端(Windows窗体)
-域(业务逻辑)
-服务(服务器)
Domain项目具有Service项目使用的AsyncServer和Client项目使用的AsyncClient。
我希望客户端获得与该服务实例相同的内容,因为我试图将Service添加为引用并将其设为静态并且不起作用,所以我还为其实现了Singleton Pattern,仍然不起作用,因为每次我尝试访问该服务时,它都会创建一个新实例。
那么有没有办法从Service项目中获取Program类的相同实例或另一个类?
谢谢!
服务项目的一部分代码:
聊天服务:
private static ChatService chatService;
private static readonly object syncObject = new object();
public AsyncServer AsyncServer { get; private set; }
private ChatService()
{
InitializeComponent();
AsyncServer = new AsyncServer();
}
public static ChatService GetInstance()
{
lock (syncObject)
{
if (chatService == null)
{
chatService = new ChatService();
}
}
return chatService;
}
程序:(使用console
参数调用该服务)
public static ChatService ChatServer { get; private set; }
public static void Main(string[] args)
{
if (args[0] == "console")
{
ChatServer = ChatService.GetInstance();
ChatServer.RunAsConsole(args);
}
else
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
ChatService.GetInstance()
};
ServiceBase.Run(ServicesToRun);
}
}
客户项目的一部分代码:
ChatForm:
private void OnConnectButtonClick(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtIP.Text) && !string.IsNullOrEmpty(txtName.Text))
{
asyncClient = new AsyncClient(txtIP.Text);
asyncClient.Connect();
asyncServer = Service.Program.ChatServer.AsyncServer;
asyncServer.ChatContentReceivedMethod += DisplayChatContent;
SetControlsForConnection();
}
}
如果我调试Client项目,则ChatServer为空。