C# Windows form application freezing when created

221 views Asked by At

So around a week ago I started to test out Sockets in C# and I had an idea to make 1 to 1 chat application which could be opened if a message was sent through the NetworkStream, however, I ran into a problem where once the button is pressed, the form starts up but it is frozen.

This is the code used to start the messaging form

if(args[0] == "liveChat") 
{
    messagingforms msgfrms = new messagingforms(); // The actual messaging form
    msgfrms.Show(); // Shows the messaging form but when it shows, it freezes
    SendMessage("liveChat"); // This is a function I created to send a message through the NetworkStream
}                           //  to start the messaging form for the client

When the messaging form is shown, it starts a new thread which either starts to listen for clients of connects to a server. This is the Client code

// This is a snippet showing what happens when the form loaded
// There are variables such as ips to connect to, threads and NetworkStreams
private void messagingforms_Load(object sender, EventArgs e) // This is what happens when the messaging form loads
{
    ConnectionListenerThread = new Thread(ConnectionListener); 
    ConnectionListenerThread.Start(); // Starts the function below 
}

public static void ConnectionListener()  // This is the code for the client which tries to connect to the server
{
    tcpClient = new TcpClient();
    tcpClient.Connect(connectTo, 4535);
    dataStream = tcpClient.GetStream();
    MessageRecieverThread = new Thread(messageListener);
    MessageRecieverThread.Start(); // An infinite loop that sees if there are any incoming messages
    SendMessage("Test message"); // I did this to test if the connection was successfull, and it is but the form 
}                               //  still wouldnt start responding

Server code for the messaging form

private void messagingform_Load(object sender, EventArgs e)
{

    startConnection = new Thread(awaitConnection);
    startConnection.Start(); // Starts the thread that listens for connections; the function below.

}
public static void awaitConnection()
{
    tcpListener = new TcpListener(IPAddress.Any, MessagingPort); // Starts to accept any incoming clients
    tcpListener.Start(); // Starts the tcp listener
    tcpClient = tcpListener.AcceptTcpClient(); // If there is an incoming client then it accepts it
    dataStream = tcpClient.GetStream(); // Gets the networkStream
    tcpListener.Stop(); // Stops listening for clients
    startListeningForMessages = new Thread(messageListener); // Starts listening for any incoming messages
    startListeningForMessages.Start(); // Starts the thread
}

Quite new to stack overflow, so if the format needs fixing tell me.

0

There are 0 answers