Создание потока с MakeStream () в формах Windows - PullRequest
0 голосов
/ 07 октября 2019

Я хочу создать поток в своем коде c # для отправки данных. Отправка данных происходит при нажатии на кнопку в окнах форм. Поскольку у меня есть несколько кнопок, я реализовал отдельную функцию отправки. Однако, когда я пытаюсь "NetworkStream stream = tcpclnt.GetStream ();"в классе Form я получаю сообщение об ошибке, что функция SendMessage () не может найти «поток».

Я уже пытался создать отдельную функцию для создания потока, но, поскольку они не являются глобальными, моя другая функция может 't распознает «поток»

Я также смотрю на ошибку, но не могу найти решение, в котором другие мои функции все еще имеют доступ к «потоку».

Вот моя первая часть кода:

   public partial class Form1 : Form
    {
    List<Panel> listPanel = new List<Panel>();
    TcpClient tcpclnt = new TcpClient(); // Makes a new TcpClient

    public Form1()
    {
        InitializeComponent();
        NetworkStream stream = tcpclnt.GetStream();
    }


    private void ConnectButton_Click(object sender, EventArgs e)
    {
        ConnectPanel.BringToFront();
    }

   public void MakeConnectionButton_Click(object sender, EventArgs e)
    {
        try // Error handeling
        {

            int x = 0; // Sets port number 0
            Int32.TryParse(PortTextBox.Text, out x); // Convert string from textbox to int
            tcpclnt.Connect(HostTextBox.Text, x); // uses the ip-address and port to connect to server
            MessageconnectBox.Text = "Connected"; // Shows user that connection is made

        }
        catch (Exception ex1)
        {
            ErrorMessageBox1.Text = "Error, client cannot connect" + ex1.StackTrace; // Writes error to messageconnectbox
        }
    }

   private void Profile8Button_Click(object sender, EventArgs e)
    {
        Profile8Panel.BringToFront();
        try
        {
            String ReceiveData = String.Empty;
            ReceiveData = SendMessage("1018");
        }
        catch (Exception ex13)
        {
            ErrorMessageBox1.Text = "Error, in profile 8 button" + ex13.StackTrace; // Writes error to messageconnectbox
        }
    }

..... "множество других функций, вызывающих SendMessage ()"

   public string SendMessage(string message)
    {
        Byte[] data = System.Text.Encoding.ASCII.GetBytes(message); // Translate the passed message into ASCII and store it as a Byte array.
        stream.Write(data, 0, data.Length);  // Send the message to the connected TcpServer.
        Console.WriteLine("Sent: {0}", message);
        data = new Byte[256]; // Buffer to store the response bytes.
        String responseData = String.Empty;  // String to store the response ASCII representation.
        Int32 bytes = stream.Read(data, 0, data.Length); // Read the first batch of the TcpServer response bytes.
        responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
        return responseData;
    }

}

...