I have a class like this. The event Topology_SynchStateChange
gets fired in Windows forms but doesnt fire up in Console App. Please help.
public class Presenter
{
private AlarmManager commandAlarmManager;
private Site commandSite;
private NetworkCredential commandUserCredentials;
private HostManager.StateChangedHandler commandLoginStateChangeHandler;
private LocalHostManager.PluginStateChangedHandler commandPluginStateChangeHandler;
private StandaloneAsyncExecutor AsyncExecutor = new StandaloneAsyncExecutor();
private DeviceChannel defaultChannel;
private DeviceChannel DefaultChannel { get { return defaultChannel; } }
public Presenter()
{
}
public void GetCameraURL()
{
//Grabs a reference to the Alarm Manager of the command SDK.
commandSite.Topology.SynchStateChange += Topology_SynchStateChange;
commandSite.LocalHost.PluginStateChanged += commandPluginStateChangeHandler =
(LocalHostManager localHost, LocalHostManager.PluginStates state, Exception error) =>
{
if (error != null)
{
commandSite.LocalHost.PluginStateChanged -= commandPluginStateChangeHandler;
// HandleException("Login Halted: Plugin Error", error);
// view.SetOpenCloseEnabled(!isCes);
}
if (state == LocalHostManager.PluginStates.Online)
{
commandSite.LocalHost.PluginStateChanged -= commandPluginStateChangeHandler;
//view.SetOpenCloseEnabled(true);
}
};
commandSite.Host.StateChanged += commandLoginStateChangeHandler =
(HostManager host, HostManager.HostState state, MarchNetworks.Command.CommandAPIException error) =>
{
if (error != null)
{
//HandleException("Login Halted: " + error.ExceptionCode.ToString(), error.InnerException);
//view.SetLoginReady();
CleanUpAll();
}
switch (state)
{
case HostManager.HostState.Disconnected:
//HandleException("Login Halted: Disconnected", null);
break;
case HostManager.HostState.LoginReady:
commandSite.Host.Login(commandUserCredentials);
break;
case HostManager.HostState.Online:
//view.SetAlarmInboxReady();
//UpdateAlarmInbox();
//commandSite.Host.StateChanged -= commandLoginStateChangeHandler;
break;
}
};
}
private void Topology_SynchStateChange(TopologyModel model, TopologyModel.SynchState state)
{
if (commandSite != null && commandSite.Topology != null)
{
if (state == TopologyModel.SynchState.Synchronized)
{
// Set default video channel
defaultChannel = commandSite.Topology.Channels.Where(deviceChannel => deviceChannel.HasVideo
&& deviceChannel.State == DeviceChannelState.Online
&& deviceChannel.IsEnabled
&& deviceChannel.Name.Contains("RFID")
).First<DeviceChannel>();
if (!defaultChannel.IsLoaded)
{
defaultChannel.Loaded += DefaultChannel_Loaded;
//defaultChannel.Load();
defaultChannel.Load(checkLoaded, defaultChannel.MediaStreamInfo);
}
}
//else if (state == TopologyModel.SynchState.Disconnected)
//{
// TopologyStateChanged( this, new TopologyStateChangedEventArgs( model, state, false ) );
//}
}
}
private void DefaultChannel_Loaded(DeviceChannel deviceChannel)
{
defaultChannel.Loaded += DefaultChannel_Loaded;
DeviceChannel defaultVideoChannel = defaultChannel;
defaultVideoChannel.GetLive(ReceivedLive, MarchNetworks.Command.Media.VideoEncoderResolution.LOW);
}
}