我现在用TCPServer的sendMessage发送了一个消息到客户端,然后客户端机器同样发送一个消息回来,以前接收都没有问题的,可是当我现在新建了一个窗体,在这个窗体接收消息时却出现了问题,我设置断点看了下,消息根本就没受到,断点也没有执行。可是,当我关闭这个窗体的时候,消息来了,断点也开始往下执行了。郁闷很久,百思不得其解,难道是我这个窗体阻碍了消息的接收??要不然为什么我关闭窗体了消息就能收到了?请TCP方面的高手帮忙想想啊。小弟感激不尽!!!

解决方案 »

  1.   

    对对!!就是showdialog()出来的。 大哥 您是明眼人!!能解释下怎么回事吗?要怎么处理啊?
      

  2.   

    二楼的大哥,还在吗?您别“点到为止”啊!伤心了!我这窗体不showdialog()的话不怎么好啊,所以才这样的,但是目前连消息都收不到了,这更难接受呐
      

  3.   

    你另外开个线程去ShowDialog() 碰到ShoeDialog()后不完成对话框或则不关对话框当前线程以下的语句不会执行的.
      

  4.   

    ShowDialog() 是模态窗体,代码运行到这一行就会暂停的!最基本的东西,还是多看看基础书!
      

  5.   

    我的需求是:先showdialog出来一个窗体,这个窗体上有许多条数据,我要把这些数据一条条撤销,于是,当我选中一条数据点击撤销就发送一条消息到管理员机器,管理员收到后,会返回一条消息回来给我,而此时,我收不到任何消息了,当我关闭了这个窗体,消息就收到了。郁闷啊
      

  6.   

    我照6楼大哥的做法这样写的:
            private void ShowForm()
            {
                Program.frmMain._HistoryInfo.ShowDialog();
            }
    然后新建个线程来调用这个方法,从而ShowDialog出来这个窗体:
    _thread = new System.Threading.Thread(this.ShowForm);
                            _thread.Start();
                            _thread.IsBackground = true;奇怪了,为什么这样做不但没有ShowDialog()出那个窗体,连这个窗体也给关了,还有ShowDialog出这个窗体的窗体也都给关了。我快崩溃了!!!
      

  7.   

    你的那个TCP组件在这个新建的窗口中有放吗?还是只放在主窗体中?
      

  8.   

    你的TCP组件是放在这个新建的窗体中还是放在主窗体中的,你要实现这种功能似乎要改动一下!
      

  9.   

    我的TCP只在主窗体有啊  都是调用那里的,其他地方没有啊!
      

  10.   

    用委托接受消息
        public delegate void MessageHandle(string mssage);
        public partial class Form1 : Form
        {
          
            MessageHandle MH ;
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                MH = new MessageHandle(ShowMessage);
                ReceiveMsg();
            }
            private void ShowMessage(string Msg)
            {
                MessageBox.Show(Msg);
            }
            private void  ReceiveMsg()//这个就是你TcpServer接收的方法
            {
                this.Invoke(MH, new string[] { "sscccv" });//假设sscccv为你接收的数据
            }
    }
      

  11.   

    一般简单的做法就是TCpServer端开一个线程一直 while(true){Serversocket.receive();..........}