fast reading constant data stream from serial port in C++.net
===

I'm trying to establish a SerialPort connection which transfers 16 bit data packages at a rate of 10-20 kHz. Im programming this in C++/CLI. The sender just enters an infinte while-loop after recieving the letter "s" and constantly sends 2 bytes with the data.
Heres what I've got so far, cut down to the most important parts:

    public: SerialPort^ port;
    static int values[1000000];
    static int counter = 0;
    
    
    in main:
    Parity p = (Parity)Enum::Parse(Parity::typeid, "None");
    StopBits s = (StopBits)Enum::Parse(StopBits::typeid, "1");
    port = gcnew SerialPort("COM16",384000,p,8,s);
    port->Open();
    port->ReceivedBytesThreshold = 2;
    port->DataReceived += gcnew SerialDataReceivedEventHandler(portdata);
    port->Write("s"); // this indicates the sender to start sending constantly
    
    
    
    static void portdata(System::Object^ sender, SerialDataReceivedEventArgs^ e)
    {
    	SerialPort^ rec = (SerialPort^) sender;
    	int i = rec->ReadByte();
    	int j = rec->ReadByte();
    	values[counter] = j + (i*256);
    	counter++;
    }

That's all. The counter increases slowly, while every value in the array is zero, which should not be the case.
A Problem with the sending side is very unlikely, since a more simple approach works perfectly but too slow (in this approach, the reciever sends an "a" first, and then gets 1 package consisting of 2 bytes).

I also tried another approach, but it has almost the same problem:
    
    static int values[1000000];
    static int counter = 0;
    
    void reader(void)
    	{
	    	SerialPort^ port;
	    	Parity p = (Parity)Enum::Parse(Parity::typeid, "None");
	    	StopBits s = (StopBits)Enum::Parse(StopBits::typeid, "1");
	    	port = gcnew SerialPort("COM16",384000,p,8,s);
	    	port->Open();
	    	unsigned int i = 0;
	    	unsigned int j = 0;
            port->Write("s"); //with this command, the sender starts to send constantly
    		while(true)
    		{
    			i = port->ReadByte();
    			j = port->ReadByte();
    			values[counter] = j + (i*256);
    			counter++;
    		}
    	}

    in main:
    Thread^ readThread = gcnew Thread(gcnew ThreadStart(reader));
    readThread->Start();

Again, the counter increases (much more) rapidly, but every value is zero.
What is wrong? Could You please help me?
Thanks in advance,

Nikolas