public async Task Object_Array_ToJson_Then_Back_Object_In_Streaming() { var obj = new TestObject[5]; for (var i = 0; i < obj.Length; i++) { obj[i] = new TestObject(); } //ASYNC var coll = new BlockingCollection <TestObject>(); var writerTask = Task.Run(async() => await obj.PushJsonArray() .AndWriteBytesAsync() .Pull() .AndParseJsonArrayAsync(coll).ConfigureAwait(false)); var cnt = 0; foreach (var postStream in coll.GetConsumingEnumerable()) { AssertOnValueEquality(obj[cnt], postStream); cnt++; } await writerTask.ConfigureAwait(false); //SYNC var bc = new BlockingCollection <TestObject>(new ConcurrentQueue <TestObject>(obj)); bc.CompleteAdding(); cnt = 0; foreach (var postStream in (await bc.PushJsonArray() .AndWriteBytesAsync().ConfigureAwait(false)) .Pull() .AndParseJsonArray <TestObject>()) { AssertOnValueEquality(obj[cnt], postStream); cnt++; } }