Я пытаюсь создать службу Windows, которая активирует некоторый процесс на нашем сервере.
Я также добавил хост wcf для связи службы через программу пользовательского интерфейса и клиента wcf.
Но у меня есть некоторые проблемы с передачей данных из сервиса клиенту, поэтому класс данных является классом сервиса. И когда я получаю вызов, класс создается снова не с данными.
Я пытался дать ему экземпляр wcf singleton, но он не был создан в начале.
Пример:
partial class ProcessLoaderService : ServiceBase
{
private InnerChannelHost _host;
public ProcessLoaderService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
try
{
_host = new InnerChannelHost(componentUID);
}
catch (Exception e)
{
ErrorManager.WriteException("Process loader has failed to initialize.",e);
Stop();
}
}
protected override void OnStop()
{
// Add code here to perform any tear-down necessary to stop your service.
}
}
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple ,
InstanceContextMode = InstanceContextMode.Single,
UseSynchronizationContext = false)]
class ProcessLoader : IInnerChannelService
{
public void Run(string processLoaderUID)
{
// some data saved in members
}
public void GetComponents(ref ProcessContract[] processContracts)
{
// get the stored data
processContracts = ConvertProcessToContract();
}
}
Я мог бы реализовать класс как singleton, а интерфейс - в другом классе, вызывая методы singleton. какие-нибудь другие идеи?