Я создал приложение Windows Forms для запуска службы WCF, которая будет использоваться практически полностью одной частью программного обеспечения, работающего на том же компьютере, и я также хотел бы, чтобы приложение хостинга служило «панелью мониторинга», которая будет отображать соответствующие обновления статуса о поступающих запросах для обеспечения прозрачности. Однако, хотя приложение Windows Forms используется для запуска и остановки службы, мне не удалось заставить его взаимодействовать с ним каким-либо другим значимым образом.
Некоторые примечания/что я пробовал:
- Доступ к сервису будет иметь только одна программа (возможно, кроме программы хостинга)
- Служба настроена на использование InstanceContextMode.Single, но свойство SingletonInstance объекта ServiceHost всегда имеет значение null.
- Добавление ссылки на службу к собственной размещенной службе привело к тому, что основная программа перестала отвечать на запросы (возможно, не неожиданно).
Прошу прощения за неточность, но я в основном попытался получить доступ к объекту службы, а затем к самой службе. Я что-то упустил или есть совершенно лучший способ сделать это?
Спасибо,
ГББ
Изменить: для ясности/решения, с которым я столкнулся, - установка ссылки на окно хоста как статического члена класса окна хоста, который был доступен службе.
public partial class frmMainWindow : Form
{
public static frmMainWindow CurrentInstance;
ServiceHost serviceHost;
public frmMainWindow ()
{
InitializeComponent();
CurrentInstance = this;
}
void StartService()
{
// service host stuff here for starting TestServer service
}
void StopService()
{
// stop the service
}
// update the status textbox in the host form
public void SetStatus(string status)
{
textStatus.Text = status;
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class TestServer : ITestServer
{
frmMainWindow HostWindow = null;
public TestServer ()
{
HostWindow = frmMainWindow .CurrentInstance;
HostWindow.SetStatus("Service started");
}