Я могу ответить на мой вопрос сейчас,
Я больше не использую SOAP для загрузки своих файлов в свое решение, сейчас я использую HTTPWebRequest,
1) да, я загружаю свои большие файлы кусками (каждый блок занимает 1 МБ),
2) каждый блок (1 МБ) может дать мне прогресс каждого BufferSize (4 КБ в моем случае);
так что есть большой цикл, foreach (Chunk in File) {}.
и внутри большого цикла есть еще один цикл, поскольку я использую HTTPWebRequest:
long buffer = 4096;
Stream stm = request.GetRequestStream();
while (remainingOfChunkWithReq != 0)
{
stm.Write(buffer, 0, bytesRead);
remainingOfChunkWithReq = remainingOfChunkWithReq - bytesRead;
bytesRead = memoryStream.Read(buffer, 0, bytesSize);
//Send Progress
}
затем продолжайте посылать запрос. и получите ответ.