Websocket-sharp在打开websocket时不会引发OnOpen事件

时间:2017-07-27 23:13:53

标签: c# events websocket websocket-sharp

我正处于编写与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事件?

2 个答案:

答案 0 :(得分:1)

在MainWindow_Loaded方法中,您在订阅OnOpen事件之前调用Connect。

如果您在调用Connect之前订阅了该事件,则textBox1.Text应设置为" connected"连接成功后。

答案 1 :(得分:0)

在你的情况下,真正的原因是这一行

 using (var ws = new WebSocket("ws://169.254.101.183"))

当您的块结束时,'ws'对象将被处理,包括您的事件处理程序。经过一段时间的延迟,你得到了WebSocket的响应,但是处理程序已经被破坏了。