ну вот у вас же в коде есть такая строка if(myArgs.log || myArgs.l)
запустите с логированием.
Как я понимаю, если логи в консоли идут, значит импорт проходит и тогда проблема в том что асинхронный forEach отрабатывает быстрее, чем успевает завершиться хотя бы один из его callback'ов
И как следствие - на момент вывода переменной counter у вас в ней лежит 0.
Damir: Вообще, я ещё раз перечитал ваш изначальный пост и ИМХО, я бы сделал по другому:
ViewModel, создавал бы в конструкторе главного элемента (может у вас MainWindow) в котором существует ваш Frame. Затем у зкземпляра viewModel задал бы свойство (предварительно определенное в классе-модели), что-то типа OwnerFrame, задав ему объект того самого фрейма. А вот дальше (в конструкторе главного элемента или в другом месте, но отдельной функцией), я бы уже запустил процедуру со сторонним потоком, по анализу состояний.
Damir: ну во первых по поводу отлова исключений - в меню студии Debug->Exceptions и напротив "Common Language Runtime Exceptions" в колонке Thrown поставьте галочку.
Далее по вашему коду...
Попробуйте Dispatcher от элемента управления, свойство которого вы меняете посредством биндинга (Т.е. ваш ViewModel).
Damir: пробегитесь дебагером и посмотрите точно, где всё падает. По хорошему, использовать Dispatcher надо во всех случаях, где вы работаете со сторонним элементом управления, созданном в другом потоке.
А вообще - лучше бы вы сюда ещё куски кода запостили с указанием места падения, ибо я не экстрасенс, на расстоянии определять причины ваших проблем ;-)
ar4ebaldello: Да, вы правы - я поторопился.
Convert.ToChar(Convert.ToUInt16(var)) конечно же.
(Хотя если ваш вариант автор считает не рабочим, то и мой тоже вряд ли ему подойдет)