日期:2014-05-17  浏览次数:20842 次

C#用新线程创建的窗口总是为响应
刚刚学习C#大概三个星期,大作业要求利用socket写一个通信的软件。现在我服务器端有一个发布系统消息的功能,然后客户端的线程监听到了之后就开启另外一个线程新建一个通知窗口(类似QQ那样)


客户端的监听到系统消息时候响应代码:
else if (acceptFromServer[0] == "System")
                    {
                        message_system = acceptFromServer[1];
                        //清除缓存区的内容
                        for (int i = 0; i < acceptFromServer.Length - 1; i++)
                        {
                            acceptFromServer[i] = "";
                        }
                        //开启新线程创建窗口
                        Thread new_window = new Thread(new ThreadStart(System_window));
                        new_window.Start();
                        new_window.IsBackground = true;
                    }


这个是新建窗口的函数
public void System_window()
        {
            Message_right_down b = new Message_right_down(message_system);
            b.Show();
            while (b.closeFlag)
            {
                Thread.Sleep(100);
            }
         }

新窗口的变量什么的在这里:
public partial class Message_right_down : Form
    {

        [DllImport("user32")]
        //[DllImport("user32.dll")]
        private static extern bool AnimateWindow(IntPtr hwnd, int dateTime, int dwFlags);
        //hwnd窗口句柄.dateTime:动画时长.dwFlags:动画类型组合 
        //下面是dwFlags的各种动画标志:
        int AW_ACTIVE =