mrid c# issue #1

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
					
public class Program
{
	public static void Main()
	{
		 
		List<string>  equipments = new List<string>();
		equipments.Add("192.168.0.12");
		equipments.Add("192.168.0.13");
		equipments.Add("192.168.0.14");
		equipments.Add("192.168.0.11");
		
		foreach(var equipment in equipments) {
			List<RegisterMap> registers = new List<RegisterMap>();
			 registers.Add(
                        new RegisterMap
                        {
                            FriendlyName = equipment + ":Value 1",
                            Register = 2001,
                            StationID = 1
                        });
                    registers.Add(
                        new RegisterMap
                        {
                            FriendlyName = equipment + ":Value 2",
                            Register = 2002,
                            StationID = 1
                        });
                    registers.Add(
                        new RegisterMap
                        {
                            FriendlyName = equipment + ":Value 3",
                            Register = 2003,
                            StationID = 1
                        });
			
			
			A.AddMaster(equipment, 502, registers);
		
		}
		
	}
}


static class A {

	private static List<Task> _tasks = new List<Task>();
	private static List<MBTCPMaster> _masters = new List<MBTCPMaster>();
	
public static void AddMaster(string ipAddress, int port, List<RegisterMap> registers)
        {
            Console.WriteLine("IN AddMaster : " + ipAddress + "   " + registers[0].FriendlyName + "\n");
            new Thread(() =>
            {
                _tasks.Add(Task.Factory.StartNew(() =>
                {
                    Monitor.Enter(_masters);
                    _masters.Add(new MBTCPMaster().Connect(ipAddress, port).SetRegisters(registers));

                    //_masters.Last().OnEvent += MasterEvent;

                    //Debug.WriteLine(_masters.Count + " TCP masters connected");
                    Monitor.Exit(_masters);
                }));

            }).Start();

        }
	
}


class MBTCPMaster {

	private string _hostname = string.Empty;
	private List<RegisterMap> _registersToRead;
	
	public MBTCPMaster SetRegisters(List<RegisterMap> registerList)
        {
            Console.WriteLine(" IN SetRegisters : " +_hostname + "   " + registerList[0].FriendlyName + "\n");
            _registersToRead = registerList;
            return this;
        }
	
	
	public MBTCPMaster Connect(string hostname, int port)
        {
            _hostname = hostname;
             _registersToRead = new List<RegisterMap>();
		
		return this;
	    }
}


public struct RegisterMap
{
    public byte StationID;
    public string FriendlyName;
    public ushort Register;
}
;