求助:C#中多线程的Form问题
小弟最近学习 想做一个聊天的小程序
当客户端A 和 客户端B 通讯的时候
A 接受到 B 的消息
A在事件处理中new 一个Form FormMsg 并Show()
然后 调用 FormMsg 的方法(显示消息)
程序运行后,可以看到在B发出消息后,A弹出了Form,并且Form上也显示了数据,但是显示完数据后,Form就无法响应了
因为A和B接受发送数据都是多线程的 我想这可能和多线程与Form有关吧 网上看了几篇都不是很懂
请大侠们指教!
A 中处理接受消息的事件:(大意如此)
private void StringInputHandler(String Data)
{
FormMSG newForm = new FormMSG();
newForm.Show();
newForm.ShowText(Data);
}
小弟先谢谢大家了!!
------解决方案--------------------哇学 c/s 结构啦 .我没做过.帮你顶下.
------解决方案--------------------i think you should attach a thread to "newForm ", to let it deal with messages and commands such as mouse click. Otherwise it will not respond to anything...
------解决方案--------------------不懂,帮顶
------解决方案--------------------问题的原因可能是事件由多线程抛出,窗体由该线程创建,在事件处理完成之后,线程进入下一次消息接收循环,线程一直处于等待接受消息的状态,导致显示的窗体处于假死状态
------解决方案--------------------form只是一个显示的介质,你应该自己写一个接受的client socket程序,
由这个client socket和你的server进行通讯,然后在client socket中把
接受到的东西往你的form上显示
------解决方案--------------------关注一下,4年前就快2星了,可是后来不搞.net了,现在回来接点分,争取再升一星!
------解决方案-------------------- 问题的原因可能是事件由多线程抛出,窗体由该线程创建,在事件处理完成之后,线程进入下一次消息接收循环,线程一直处于等待接受消息的状态,导致显示的窗体处于假死状态
========================
肯定的,一个消息过来你就new一个窗体 显然不符合常理阿
------解决方案--------------------去查查委托这个东西,用委托打开你的窗体应该就不会出现这个问题了
------解决方案--------------------如果你不给我分,我很欣慰,我学到知识了!
如果你给我分,无奈:有人请吃饭,回头饭馆还奖个打火机!
------解决方案--------------------用异步委托来show窗口,就是beginInvoke。