using System.Collections;
using System.Collections.Generic;
using YamlDotNet.Serialization;
using YamlDotNet.Core.Events;
using System.Collections.Concurrent;
public static void Main()
var pipe = new BlockingCollection<char>(new ConcurrentQueue<char>());
var writer = new PipeWriter(pipe);
writer.WriteLine("---\nId: {0}\nName: MyName", counter);
var deserializer = new Deserializer();
var eventReader = new EventReader(new Parser(new PipeReader(pipe)));
eventReader.Expect<StreamStart>();
var data = deserializer.Deserialize<Datablock>(eventReader);
Console.WriteLine("{0}\t{1}\t{2}", DateTime.Now, data.Id, data.Name);
while(!eventReader.Accept<StreamEnd>());
Console.WriteLine("Done");
public int Id { get; set; }
public string Name { get; set; }
public class PipeReader : TextReader
private readonly BlockingCollection<char> _pipe;
public PipeReader(BlockingCollection<char> pipe)
public override int Read()
public class PipeWriter : TextWriter
private readonly BlockingCollection<char> _pipe;
public PipeWriter(BlockingCollection<char> pipe)
public override Encoding Encoding { get { return Encoding.UTF8; } }
public override void Write(char value)
public override void Close()