c# - 事件处理程序不会在控制台中启动,但在 Windows 中会启动
问题描述
我有这样的课。该事件Topology_SynchStateChange
在 Windows 表单中被触发,但不会在控制台应用程序中触发。请帮忙。
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);
}
}
解决方案
推荐阅读
- c - 比较数组中的数据点
- java - Jnetpcap 未找到所有设备
- ios - iqkeyboard 工具栏运行到顶部
- python - 将 django 媒体文件部署到 heroku
- kotlin - 查找数组的第二/第三/第四最小值
- php - Laravel 回合不起作用,仅对总数进行四舍五入
- python-imaging-library - 为什么 PIL (pillow) Image.save() 会减小文件大小?
- javascript - 无论如何,为什么从多个文件导入时 Firebase 会重新初始化?
- ios - Swift 中“vanilla”枚举上的 switch 语句是否在恒定时间内执行?
- flutter - Flutter:如何将变量从 statefulwidget 传递给其他 statefulwidget