Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Основывайте свой сервис на эту статью MSDN и создайте два сервисных хоста. Но вместо того, чтобы на самом деле назвать каждый сервисный хост непосредственно, можно выломать его к стольким классам, сколько Вы хотите, который определяет каждый сервис, который Вы хотите выполнить:
internal class MyWCFService1
{
internal static System.ServiceModel.ServiceHost serviceHost = null;
internal static void StartService()
{
if (serviceHost != null)
{
serviceHost.Close();
}
// Instantiate new ServiceHost.
serviceHost = new System.ServiceModel.ServiceHost(typeof(MyService1));
// Open myServiceHost.
serviceHost.Open();
}
internal static void StopService()
{
if (serviceHost != null)
{
serviceHost.Close();
serviceHost = null;
}
}
};
В теле сервисного хоста окон назовите различные классы:
// Start the Windows service.
protected override void OnStart( string[] args )
{
// Call all the set up WCF services...
MyWCFService1.StartService();
//MyWCFService2.StartService();
//MyWCFService3.StartService();
}
Затем можно добавить столько сервисов WCF, сколько Вам нравится к одному сервисному хосту окон.
REMEBER для вызова методов остановки также....
Если Вы захотите, чтобы одна служба Windows запустила два сервиса WCF, то Вам будет нужен один ServiceInstaller, который имеет два экземпляра ServiceHost, оба из которых запускаются в (единственном) методе OnStart.
Вы могли бы хотеть следовать за шаблоном для ServiceInstaller, это находится в коде шаблона, когда Вы принимаете решение создать новую службу Windows в Visual Studio - в целом это - хорошее место для запуска.
Вам, вероятно, просто нужны 2 сервисных хоста.
_host1 и _host2.