Socket接收的消息无法以弹出窗口形式打开!(在线结贴)

wang520d 2009-06-26 01:17:21
Socket接收的消息无法以弹出窗口形式打开!弹出窗口变成无法响应了;要怎么改接受消息的方法呢?
下面是代码:

/// <summary>
/// 提取命令
/// 格式为两个一位整数拼接成的字符串。
/// 第一位为0表示客户机向服务器发送的命令,为1表示服务器向客户机发送的命令。
/// 第二位表示命令的含义,具体如下:
/// "11"-服务器要求客户机更新在线列表
/// "12"-服务器要求客户机做闪屏振动
/// default-接受用户消息或者系统消息的正文
/// </summary>
/// <param name="s">要解析的包含命令的byte数组,只提取前两个字节</param>
/// <returns>拼接成的命令</returns>
private string DecodingBytes(byte[] s)
{
return string.Concat(s[0].ToString(), s[1].ToString());
}

/// <summary>
/// 接受消息的线程执行体
/// </summary>
private void ReceiveMsg()
{
while (true)
{
byte[] packet = new byte[_maxPacket];
_nws.Read(packet, 0, packet.Length);
string _cmd = DecodingBytes(packet);

switch (_cmd)
{
case "12":
{
Nudge();
break;
}
default:
{
Thread.Sleep(3000);
string displaytxt = Encoding.Unicode.GetString(packet);
chatrcd_rtb.AppendText(displaytxt);
//能附加到上面的chatrcd_rtb控件,但是无法用在SHOW出的下面的窗体中打开,SHOW完后该窗体变成无法响应状态,怎么修改下呢?
if (!string.IsNullOrEmpty(msg))
{
//MessageBox.Show(msg);
EasyChat.Msg.Form3 ff = new EasyChat.Msg.Form3();
ff.Show();
}

_sp1.Play();
break;
}
}
}
}
...全文
155 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang520d 2010-04-06
  • 打赏
  • 举报
回复
好多朋友 都遇到这个问题了 贴出下解决办法:用委托
displaytxt = Encoding.Unicode.GetString(packet);//消息字符串
if (chatrcd_rtb.InvokeRequired)
{
popMsgDelegate = new PopMsgDelegate(CreatePopForm);
chatrcd_rtb.Invoke(popMsgDelegate, new object[] { displaytxt });
}
spursand 2010-02-03
  • 打赏
  • 举报
回复
子线程无法创建窗体,必须用委托在主线程进行创建窗体的操作.
spursand 2010-02-02
  • 打赏
  • 举报
回复
我都遇到过这样的问题啊.楼主说一下解决方法啊!
weixiaolong 2009-07-04
  • 打赏
  • 举报
回复
还真没用过弹出窗体 原来用的都是给某个控件的text属性赋值
用线程的时候是无法操作主窗体的控件的 不知到是不是这的原因

如果是的话 可以试试用委托
public delegate void RefreshLB();

private void ThreadDis()
{
//参数就是要调用的方法
RefreshLB ARef = new RefreshLB(DisplayFileNames);
lbFileNames.Invoke(ARef);
}

62,263

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧