I've written this program to automatically gather the IP Addresses that allow me to connect to port 8888.
It works fine until the final loop. Whereby my for loop finishes. But my timer keeps going and outputting:
10.10.10.150 - No
10.10.10.150 - No
10.10.10.150 - No
10.10.10.150 - No
This is my code, after the for loop I try stop the timer, but it doesn't stop.
protected void PingPython(){
    for (int i = 50; i <= 150; i++){
        // Try Connect to Python
        try{
            ip = "10.10.10."+i.ToString();
            // Set timer to break Client connection
            tConnectTimeout = new System.Timers.Timer(100);
            tConnectTimeout.Elapsed += new System.Timers.ElapsedEventHandler(tConnectTimeout_Elapsed);
            tConnectTimeout.Start();
            // Connect to Client
            cli = new TcpClient();
            cli.Connect(ip, 8888);
            // If it connects, stop the thread
            tConnectTimeout.Stop();
            tConnectTimeout.Dispose();
            Console.WriteLine(ip + " - Yes");
            ipAddresses.Add(ip);
            cli.Close();
        } catch (ObjectDisposedException ex) {
        } catch (SocketException ex) {
            tConnectTimeout.Stop();
            tConnectTimeout.Dispose();
            Console.WriteLine(ip + " - No");
        }
    }
    tConnectTimeout.Stop();
    btnStart.Sensitive = true;
    foreach(string ipa in ipAddresses){
        cbAddresses.AppendText(ipa);
    }
    cbAddresses.Sensitive = true;
}
public void tConnectTimeout_Elapsed(object sender, System.Timers.ElapsedEventArgs e){
    //Close the socket
    cli.Close();
    Console.WriteLine(ip + " - No");
    //Stop and dispose timer
    tConnectTimeout.Stop();
    tConnectTimeout.Dispose();
}