У меня есть поток, в котором я пишу в 2 потока. Проблема в том, что поток блокируется до тех пор, пока первый не закончит запись (пока все данные не будут переданы на другую сторону канала), и я этого не хочу. Есть ли способ сделать его асинхронным? chunkOutput - это словарь, заполненный данными из нескольких потоков, поэтому чем быстрее выполняется проверка существующих ключей, тем быстрее будет писать канал.
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);
}
}