【发布时间】:2016-07-26 07:46:57
【问题描述】:
假设我有一个现有的 Windows 窗体应用程序,并且我创建了一个新的 Windows 服务项目。
windows 窗体应用程序将作为我的应用程序的 UI,windows 服务包含一些我想稍后调用的方法。
我的问题是我怎么可能从我的 Windows 服务中调用这些方法,因为它是从一个单独的项目中创建的?应该怎么做?
假设 Windows 服务包含以下内容:
static Boolean connectionStatus = false;
protected override void OnStart(string[] args)
{
....
//Connect to Server
//Once connected change the "connectionStatus" to true
}
protected override void OnStop()
{
connectionStatus = false;
}
//If I want to check if this Service is Connected into Server, I just call this
public Boolean isConnected() {
return connectionStatus;
}
以及来自与 Windows 服务分离的项目的 Windows 窗体应用程序:
...
//Let's say I want to show a MessageBox containing if the Service is connected to Server
MyService myservice = new MyService();
MessageBox.Show("Client Status: " + myservice.isConnected());
【问题讨论】:
-
您是否曾尝试将您的服务项目添加到表单应用程序并添加对它的引用?就像这里msdn.microsoft.com/en-us/library/f3st0d45.aspx
-
你调用的是什么方法?是WCF吗?如果不是,你打电话是什么意思?另一个项目应该充当图书馆吗?在这种情况下,它是一个 Windows 服务这一事实是无关紧要的。
-
从我的 windows 服务有一个 UDP 和 TCP 套接字函数将连接到服务器。我的 Windows 服务中至少有 3 种方法,其中一种方法是在客户端连接到服务器时返回 true 或 false。
-
我说的是从windows服务调用方法,比如连接到服务器返回true或false
-
不清楚为什么你需要一个windows 服务。看起来一个通信库就足够了。您需要一个 Windows 服务 if 您想与其他应用程序/服务器共享这些方法,或者在应用程序/客户端关闭时也运行它们:在这种情况下(但这不是您在这个问题中所描述的)考虑实施 WCF 服务。