private async void btnLoadTemplate_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            _templateModel = await _templateLoader.LoadTemplate(txtTemplate.Text);

            lstTemplate.Items.Clear();
            foreach (var template in _templateModel.Templates)
            {
                lstTemplate.Items.Add(new ListViewItem(new string[] { template.Key }));
            }
            Cursor.Current = Cursors.Default;
        }
        public async Task <TemplateCollectionModel> LoadTemplate(string path)
        {
            var result           = new TemplateCollectionModel();
            var collectionFolder = new DirectoryInfo(path);

            result.CollectionName = collectionFolder.Name;
            var files = collectionFolder.GetFiles("*.txt");
            var tasks = new List <Task <KeyValuePair <string, string> > >();

            foreach (var template in files)
            {
                tasks.Add(Task.Run(() => ReadTemplateFile(template)));
            }
            await Task.WhenAll(tasks.ToArray()).ContinueWith(x =>
            {
                foreach (var value in x.Result)
                {
                    result.Templates.Add(value.Key, value.Value);
                }
            });

            return(result);
        }