Ich habe Windows-Dienst, der Aufgaben auf Timer-Tick ausführt. Ich wählte auch, um mit Windows-Service durch WCF Named Pipe-Kanal zu kommunizieren. Ich kann die WCF-Service-Instanz erstellen und zum Zuhören öffnen. Aber wie greife ich auf Objekte zu, die im Windows-Dienst über WCF basieren? DieseWie mit Windows-Dienst über WCF kommunizieren?
ist, was mein Windows-Dienst wie folgt aussieht:
public partial class MyService : ServiceBase
{
private ServiceHost m_svcHost = null;
private myObject = null;
...
// Run this method from external WCF client
private void SomeMethod()
{
}
protected override void OnStart(string[] args)
{
if (m_svcHost != null) m_svcHost.Close();
m_svcHost = new ServiceHost(typeof(MyCommunicationService));
m_svcHost.Open();
// initialize and work with myObject
}
protected override void OnStop()
{
if (m_svcHost != null)
{
m_svcHost.Close();
m_svcHost = null;
}
}
}
Also, was ich will, den Zugang zu myObject innerhalb WCF-Dienst haben, wenn der Client-Anfrage machen. Oder führen Sie sogar eine Methode für myObject aus.
Diese Frage viel mehr Klärung bedarf. Fügen Sie Informationen hinzu, die Ihren bisherigen Fortschritt zeigen. Auf welche Objekte willst du auch zugreifen? –
Aktualisiert. Grundsätzlich muss ich Windows-Dienstaktivitäten steuern, seinen Status über WCF-Dienst abfragen. – Pablo
Sie benötigen nur einen Befehlskanal zwischen der 'MyCommunicationService'-Instanz und Ihrer Windows-Service-Instanz. Sie können das auf vielerlei Weise erreichen, zum Beispiel über eine statische Eigenschaft. –