我正在尝试通过制作自己的小型网络库来学习网络。目前我有一个这样的代码可以使用的新客户端列表。如果列表中有任何内容,则 NewClientConnected() 方法返回 true 并删除第一个元素。
ConnectedClient newClient; // ConnectedClient is my class storing it's socket and stream and all that.
if(NewClientConnected(out newClient)
{
...handling new client, notification, etc...
}
检查新数据包(流的前缀切片)也是如此。我试图将其提升到一个新的水平,并尝试在此类事情发生时引发事件并从新的联系开始。问题是,该事件是从另一个线程引发的,导致在 form1.cs 中处理该事件时发生异常。
如何确保事件由静态非控制类的主线程处理?我应该继续做我该做的事吗?(上面的片段)我听说过消费者生产关系的想法,如果我没记错的话,它仍然需要一个计时器(使用它自己的线程)或另一个线程。
我试图用谷歌搜索它并在这里查看,但每个人似乎都有不同的问题。它在一个库项目中,而另一个项目(我的服务器和客户端测试)正在引用它。
提前致谢。