首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#中多线程的Form有关问题

2012-02-08 
求助:C#中多线程的Form问题小弟最近学习想做一个聊天的小程序当客户端A和客户端B通讯的时候A接受到B的消息

求助: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。

热点排行