Я хочу создать поток в своем коде 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;
}
}