C#(socket)开发的windows窗体程序(客户端和服务器端)
用socket实现客户端接受服务器端发送的数据并在右下角显示出来(类似qq那种的提示框),现在基本上已经实现,但是有个问题(就是说:在接收的一端如果是用一个按钮的点击事件的话就可以正常在右下角弹出提示框(一切正常),但是在获取数据的同时就调用弹出提示框的方法也可以正常弹出提示框(但是没有展示数据,而且在那个方法里确实是得到了数据),这个问题很是不能理解为什么自动弹出就不显示数据,点击按钮就可以显示出数据呢?),请高手进来帮帮啊~~
/// <summary>
/// 接收、解码
/// </summary>
private void AcceptWorkThread()
{
Socket socket = listener.AcceptSocket();
byte[] buffer = new byte[1024];
while (true)
{
int receiveCount = socket.Receive(buffer);
if (receiveCount > 0)
{
string recString = Encoding.UTF8.GetString(buffer, 0, receiveCount);
ShowMsg(recString);//调用弹出的方法
}
else
{
socket.Close();
break;
}
}
}
//调用的方法
public void ShowMsg(string text)
{
msg = text;//这个是我要用到的一个全局变量赋值
this.showmessage();//调用弹出提示的方法
}
//按钮的点击事件
private void button1_Click(object sender, EventArgs e)
{
this.showmessage();//调用弹出提示的方法
}
//展示弹出的方法
private void showmessage()
{
if (!string.IsNullOrEmpty(msg))
{
Form2 form2 = new Form2(msg);
AnimateWindow(form2.Handle, 1000, AW_VER_NEGATIVE | AW_ACTIVATE);
form2.Show();
}
}
现在的问题是在按钮的点击事件中调用showmessage()这个方法就可以正常实现。但是在ShowMsg()这个方法中调用的时候可以弹出,但是不显示数据