Пользовательский интерфейс может быть обновлен только из основного потока (или, точнее, из потока, который создал пользовательский интерфейс).Чтобы выполнить код в нужном потоке, используйте диспетчер:
Для WPF:
this.Dispatcher.BeginInvoke(new Action(() => progressBar1.Value = j));
Для WinForm:
this.BeginInvoke(new Action(() => progressBar1.Value = j));