You send your data as one block:
dataStream.Write(bytes, 0, bytes.Length);
You should send your data in chunks (small parts of several hundred bytes) and update the progress bar after each chunk.
Pseudocode:
int dataavail = bytes.Length;
int chunkSize = 512; // 1024, 2048, 4096 are good too
while( dataavail > 0 )
{
dataStream.Write(bytes, bytes.Length - dataavail , Math.Min(chunkSize, dataavail));
dataavail -= chunkSize;
// TODO: Update Progress Indicator here
}