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.
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% 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):
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.