Schleife zum Kopieren von Blöcken aus dem Byte-Array erforderlich

8

Ich muss ein großes Byte-Array verarbeiten, das an meine Funktion übergeben wird. Ich muss den Inhalt von diesem ankommenden Bytearray in kleineren "Brocken" zu einem abgehenden Bytearray kopieren.

Für jeden "Chunk" von Daten, die im Outbound-Array erstellt werden, muss ich einen Web-Service aufrufen.

Nach der Rückkehr muss ich das durchlaufende Byte-Array erneut durchlaufen und einen ganzen oder einen Teil der Daten weiterleiten, bis das komplette eingehende Array verarbeitet ist (d. h. in Blöcken an den Web-Service gesendet wird).

Ich bin sehr neu in C # und ich kämpfe mit einer Schleife, die funktioniert. Ich weiß, wie man den Webservice anruft, um einen "Brocken" zu behandeln, aber ich kann die Schleife nicht richtig machen. Hier ist eine Skizze des pathetischen Chaos, das ich derzeit habe:

%Vor%

Ich weiß, das ist ein Durcheinander und wird nicht funktionieren; Könnte jemand eine richtige Schleife skizzieren, um das zu erreichen? Vielen Dank.

    
John Adams 24.02.2009, 22:47
quelle

5 Antworten

17

Vielleicht möchten Sie sich Array.Copy oder Buffer.BlockCopy ; Dies wird die Dinge ein wenig aufräumen, da Sie nicht alle Bytes einzeln kopieren müssen:

%Vor%     
Daniel LeCheminant 24.02.2009, 22:51
quelle
4

Wahrscheinlich möchten Sie Buffer.BlockCopy (die wenigsten der Kopien; ideal für byte[] ).

Natürlich besteht die andere Möglichkeit darin, ein MemoryStream anstelle des ausgehenden Arrays zu verwenden und jedes Mal nur Write , dann rufen Sie ToArray() oder GetBuffer() für MemoryStream auf (mit GetBuffer() , du musst dir die Länge ansehen, mit ToArray() wird es automatisch für dich getrimmt):

%Vor%     
Marc Gravell 24.02.2009 22:58
quelle
2

Warum nicht einfach Array.Copy verwenden? Ссылка

zB

%Vor%     
Gautam 24.02.2009 23:13
quelle
0

Seien Sie vorsichtig beim synchronen Aufruf von Web-Services in einer Schleife. Synchrone Web-Service-Aufrufe dauern aufgrund der Art von HTTP unbestimmte Zeit und Ihre Schleife kann für eine lange Zeit ausgeführt werden. Es ist vorzuziehen, einen asynchronen Ansatz zu verwenden.

    
Chetan Sastry 24.02.2009 22:58
quelle
-2

Sie scheinen Ihre Aufgabe logisch zusammengebrochen zu haben, schließlich haben Sie es zusammenhängend mit Worten beschrieben. Jetzt machen Sie einfach Ihren Code tun.

Pseudocode könnte etwa so aussehen:

%Vor%     
Albert 24.02.2009 22:55
quelle

Tags und Links