I am developing a windows form to function as a modbus tcp slave Simuator. I am trying to recieve write multiple coil request from modbus master. I am able to recieve the request correctly, but when I try to do the write operation it's 
throwing "object reference is not set to an instance of an object" exception. It's saying slave is null, but I have created an instance of slave and initialized it. I am using NModbus Library. Here is my code 
        private void Button1_Click(object sender, EventArgs e)
        {
              try
              {
                byte slaveAddress = Convert.ToByte(textBox3.Text);
                IPAddress address = IPAddress.Parse(textBox1.Text);
                int port = Convert.ToInt32(textBox2.Text);
                // create and start the TCP slave
                TcpListener slaveTcpListener = new TcpListener(address, port);
                slaveTcpListener.Start();
                ModbusSlave slave = ModbusTcpSlave.CreateTcp(slaveAddress, slaveTcpListener);
                slave.Listen();
                slave.DataStore = DataStoreFactory.CreateDefaultDataStore();
                DataStore dataStore = slave.DataStore;
                slave.ModbusSlaveRequestReceived += new EventHandler<ModbusSlaveRequestEventArgs>(Modbus_Request_Event);
                slave.DataStore.DataStoreWrittenTo += new EventHandler<DataStoreEventArgs>(DataStoreWrittenTo);
                // prevent the main thread from exiting
                listBox1.Items.Clear();
                Thread.Sleep(Timeout.Infinite);
                //slaveTcpListener.Stop();
              }
              catch
              {
                MessageBox.Show("Error in connection");
              }
        }
 private void DataStoreWrittenTo(object sender, DataStoreEventArgs e)
        {
            switch (e.ModbusDataType)
            {
                case ModbusDataType.HoldingRegister:
                    for (int i = 1; i < e.Data.B.Count; i++)
                    {
               //Line A         slave.DataStore.HoldingRegisters[e.StartAddress + i + 1] = e.Data.B[i];
                    }
                    break;
                case ModbusDataType.Coil:
                    for (int i = 1; i < e.Data.A.Count; i++)
                    {
 //Line B                       slave.DataStore.CoilDiscretes[e.StartAddress + i + 1] = e.Data.A[i];
                    }
                    break;
                    //case Modbus.
            }
        }   
I am getting the exception at line A if I try to write Multiple Holding Registers and at line B if I try to write Multiple Coils. Can any one please help me to solve this issue?
 
    