单击事件后,全局变量返回null

时间:2013-09-24 10:54:56

标签: c# client-server tcpclient

我正在用C#编写客户端 - 服务器应用程序,但我遇到了问题。我有相同形式的start_server和connect_to_server按钮。我想在单击connect_to_server按钮时将所有连接的客户端添加到列表中。客户端可以在connect_to_server按钮单击事件中添加到列表中,但是当事件完成时,列表返回null或空。我能做什么?关于声明列表变量的问题是什么?或者我应该实现不同的东西?有人能帮助我吗?感谢。

private void btnStartClient_Click(object sender, EventArgs e)
{
    try
    {
         richTextBox1.AppendText("Connected to server!" + "\n");
         m_connectedIpAddresses.Add(((IPEndPoint)sock.Client.LocalEndPoint).Address.ToString());
    }
    catch (Exception e1)
    {
            MessageBox.Show("Cannot connect to server");
    }
}

private void btnAnotherButton_Click(object sender, EventArgs e)
{
    int count = m_connectedIpAddresses.Count;
}

'count'变量返回零。我需要在这里连接多个客户端。

2 个答案:

答案 0 :(得分:0)

以下行声明 local 变量count

int count = m_connectedIpAddresses.Count;

即使您有一个具有相同名称的“全局”变量。尝试将其更改为:

count = m_connectedIpAddresses.Count;

这将设置变量count的值。请注意,如果变量是在另一个类中声明的,那么您必须参考那个变量。

答案 1 :(得分:0)

您是否将计数指定为全局变量?

如果是,为什么在btnAnotherButton_Click中将count声明为int

试试这个

int  count = 0;
private void btnStartClient_Click(object sender, EventArgs e)
{
    try
    {
         richTextBox1.AppendText("Connected to server!" + "\n");
         m_connectedIpAddresses.Add(((IPEndPoint)sock.Client.LocalEndPoint).Address.ToString());
    }
    catch (Exception e1)
    {
            MessageBox.Show("Cannot connect to server");
    }
}

private void btnAnotherButton_Click(object sender, EventArgs e)
{
    count = m_connectedIpAddresses.Count;
}