J'ai un fil dans lequel j'écris à 2 flux. Le problème est que le thread est bloqué jusqu'à ce que le premier finisse d'écrire (jusqu'à ce que toutes les données soient transférées de l'autre côté de la pipe), et je ne le veux pas. Y a-t-il un moyen de le rendre asynchrone? chunkOutput est un dictionnaire rempli de données provenant de plusieurs threads, donc plus la vérification des clés existantes est rapide, plus le tuyau écrira rapidement.Flux asynchrone écrit dans un fil
void ConsumerMethod(object totalChunks) {
while(true) {
if (chunkOutput.ContainsKey(curChunk)) {
if (outputStream != null && chunkOutput[curChunk].Length > 0) {
outputStream.Write(chunkOutput[curChunk]); // <-- here it stops
}
ChunkDownloader.AppendData("outfile.dat",
chunkOutput[curChunk], chunkOutput[curChunk].Length);
curChunk++;
if (curChunk >= (int) totalChunks) return;
}
Thread.Sleep(10);
}
}
Pas une réponse, mais pourquoi mettez-vous Thread.Sleep (10) dans ce code ?? – driis
Eh bien, de ne pas faire une utilisation élevée de cpu avec des boucles vides – blez