关于多窗体聊天的线程问题
我想编写一个类似QQ聊天的窗体,在主窗体中有接收服务器转发来的消息,然后在线程中处理,想把消息传到聊天窗体中并让聊天窗体打开 我用了委托 但是打开的窗体 未响应 不知道是什么原因 请求高手指教!! 在线等!!!!
以下是我写的:
接收信息 case "Send":
bool result = false;
FormCollection fc = Application.OpenForms;
foreach (Form form in fc)
{
if (form.Tag == null || form.Tag != str[1])
{
result = false;
}
else
{
result = true;
break;
}
}
if (!result)
{
ReceiveStr(str[4]);
}
委托: delegate void ReceiveStrDelgate(string infomation);
public void ReceiveStr(string infomation)
{
UserChat.chat ucc = new CharmQQ.UserChat.chat("234567", 2);
if (ucc.InvokeRequired)
{
ReceiveStrDelgate RMD = new ReceiveStrDelgate(ReceiveStr);
this.Invoke(RMD, infomation);
}
else
{
ucc.rtbChatInfo.Text += infomation + DateTime.Now.ToString() + "\r\n";
ucc.Show();
}
}
------解决方案--------------------UserChat.chat ucc = new CharmQQ.UserChat.chat("234567", 2);
放到
if (ucc.InvokeRequired)
的内部 试试
------解决方案--------------------是写this
“不会执行else中的代码”应该没错,我自己的项目测试的时候我还没遇到执行这里面代码的情况
你的主界面mainForm是一个线程,,要在这个线程里面创建窗体,才对