Ну и сам код длинного и быстрого метода:
private void UploadPicturesAsync(object sender, DoWorkEventArgs args)
{
int percentage = 0;
object arg = "Ищем изображения для загрузки..."; // подготовили объект для отправки
_worker.ReportProgress(percentage, arg); // отправили сообщение в поток GUI
DataManager.DataManager dm = new DataManager.DataManager(Application.Logger,
Application.EntityDomain.GetDbConnectionInfo().ConnectionString);
foreach (var pictureId in res)
{
arg = $"Загружаем изображение {curPic}/{resLen}..."; // подготовили объект для отправки
_worker.ReportProgress(percentage, arg); // отправили сообщение в поток GUI
foreach (Picture picture in pictures)
{
DocumentPicture documentPicture =
new DocumentPicture(Application.EntityDocumentDomain, picture);
documentPicture.SourceFileName = picture.Name;
documentPicture.StoreFileOnNetixServer();
documentPicture.Picture.Store();
}
}
arg = $"Загружено изображений: {resLen}";
_worker.ReportProgress(percentage, arg); // отправили сообщение в поток GUI
}
и быстро отрисовываем - в нашем случае просто текст на кнопку выводим
private void WorkerOnProgressChanged(object sender, ProgressChangedEventArgs e)
{
btnUploadImages.Text = $"{e.UserState}";
}