我正处于编写与IP摄像头接口的程序的早期阶段。我昨天写的一些代码工作,但是当我今天早上回到它时它没有。我知道,我可能已经做了一些事情,但是在我离开之前,当我在离开之前点击调试并且当我进入时点击调试时没有这样做时,我的工作就完成了。我甚至让我的计算机在VS上运行过夜(我几乎从来没有,我已经重新开始了)所以我可以和我所有的互联网标签一样,因为我离开了它们。计算机被锁定了,所以除非一些资源丰富的人决定惹我,否则一夜之间什么都不会改变。
我正在使用websocket-sharp,当我连接到websocket(似乎确实成功发生)时,不会引发OnOpen事件。
websocket-sharp引发事件的位置如下:
if resource.class == User
root_path
elsif resource.class == AdminUser
admin_root_path
else
end
它到达OnOpen.Emit,并且不抛出异常,所以它似乎认为它正在引发事件。活动见下文
private void open ()
{
_inMessage = true;
startReceiving ();
try {
OnOpen.Emit (this, EventArgs.Empty);
}
catch (Exception ex) {
_logger.Error (ex.ToString ());
error ("An error has occurred during the OnOpen event.", ex);
}
它似乎没有到达这条线,因为当我在那里放置断点时它没有暂停。我以前从来没有使用过.Emit的方式来提高事件,也没有在研究中找到太多东西,所以也许有些东西在那里出错了吗?
我的代码如下。
public event EventHandler OnOpen;
是否有任何明显的原因OnOpen.Emit不应该实际引发OnOpen事件?
答案 0 :(得分:1)
在MainWindow_Loaded方法中,您在订阅OnOpen事件之前调用Connect。
如果您在调用Connect之前订阅了该事件,则textBox1.Text应设置为" connected"连接成功后。
答案 1 :(得分:0)
在你的情况下,真正的原因是这一行
using (var ws = new WebSocket("ws://169.254.101.183"))
当您的块结束时,'ws'对象将被处理,包括您的事件处理程序。经过一段时间的延迟,你得到了WebSocket的响应,但是处理程序已经被破坏了。