C# 创建了WCF服务,托管在窗口服务中,试图在该服务中使用。如何做?
我创建了一个WCF服务库。然后我创建了一个Windows服务来承载这个WCF服务。 现在我想在同一窗口服务中调用WCF服务库中定义的函数C# 创建了WCF服务,托管在窗口服务中,试图在该服务中使用。如何做?,c#,wcf,windows-services,C#,Wcf,Windows Services,我创建了一个WCF服务库。然后我创建了一个Windows服务来承载这个WCF服务。 现在我想在同一窗口服务中调用WCF服务库中定义的函数 protected override void OnStart(string[] args) { if (serviceHost != null) serviceHost.Close(); // Create a ServiceHost for the Registration type
protected override void OnStart(string[] args)
{
if (serviceHost != null)
serviceHost.Close();
// Create a ServiceHost for the Registration type and
// provide the base address.
serviceHost = new System.ServiceModel.ServiceHost(typeof(Registration));
// Open the ServiceHostBase to create listeners and start
// listening for messages.
serviceHost.Open();
Registration r = new Registration();
System.Threading.Thread t = new System.Threading.Thread(r.ReadAttempt);
Object passParameterToCallback = null;
t.IsBackground = false;
t.Start(passParameterToCallback);
}
ServiceHost类还应该能够接受服务的单例实例,而不是类型,如下所示: 因此,尝试实例化类型注册的类,并将其传递给ServiceHost。不过,这只适用于单例类型的WCF服务,或者更具体地说是将InstanceContextMode设置为单例的服务 这样,您就应该留下对类的引用,并且应该能够很好地访问它 不过,也许值得从另一个角度来考虑这一切。如果您的问题只是将WCF服务中发生的事情通知windows服务,那么在WCF服务中定义一个事件如何?您的windows服务可以通过这种方式订阅WCF服务并从WCF服务接收事件 如果这是您需要在WCF服务内部使用的逻辑,那么将该逻辑提取到外部类或使其成为静态的,这样您就可以在任何地方使用它了
祝您好运如果您只需要在同一个类上调用一个方法,那么您已经在代码中这样做了,只需创建一个
新注册()
并在其上调用一个方法。没有理由通过WCF呼叫
如果出于某种原因,您确实希望通过WCF调用自己的服务,那么您应该构造一个客户机而不是实际的类
如果需要调用WCF服务对象的同一实例,则必须将WCF服务设置为,然后调用WCF客户端
或者用于接受singleton对象的ServiceHost
,然后调用同一对象实例上的方法,或者使用ServiceHost.SingletonInstance
属性返回传递给构造函数的实例