private static void LoadDataAsync(string file, BlockingCollection <string> readLines, BlockingCollection <PersonDay> readData)
        {
            var readFile = Task.Run(() =>
            {
                using (var lineReader = new StreamReader(file))
                {
                    string line;
                    while ((line = lineReader.ReadLine()) != null)
                    {
                        readLines.Add(line);
                    }
                }
                readLines.CompleteAdding();
            });
            var processLine = Task.Run(() =>
            {
                foreach (var line in readLines.GetConsumingEnumerable())
                {
                    PersonDay data = new PersonDay();
                    // Read the line
                    using (JsonTextReader reader = new JsonTextReader(new StringReader(line)))
                    {
                        SetupData(ref data);

                        while (reader.Read())
                        {
                            if (reader.TokenType == JsonToken.PropertyName)
                            {
                                switch ((string)reader.Value)
                                {
                                case "date":
                                    data.date = reader.ReadAsString();
                                    break;

                                case "mob":
                                    data.mob = reader.ReadAsString();
                                    break;

                                case "steps":
                                    ReadSteps(data.Steps, reader);
                                    break;

                                case "tags":
                                    data.tags = ReadTags(reader);
                                    break;
                                }
                            }
                        }
                    }
                    // Write the line if there was some real activity
                    if (data.Steps.Count > 0)
                    {
                        readData.Add(data);
                    }
                }
                readData.CompleteAdding();
            });
        }
 private static void SetupData(ref PersonDay data)
 {
     data.Steps = data.Steps ?? new List <Step>();
     data.Steps.Clear();
 }