Я передаю файлы и хотел бы, чтобы индикатор выполнения отображал фактический прогресс каждого файла. Это работает нормально для файлов до 15 мегабайт, но файлы, размер которых больше этого, могут привести к зависанию моего приложения. Если я не вызову этот код для индикатора выполнения, эти большие файлы будут передаваться просто отлично.
Я пробовал всевозможные способы справиться с этим с делегатами, но не повезло. Скорее, они отлично работают с небольшими файлами, но не с большими.
Некоторые примеры, которые сработали ...
pbFileProgress.Invoke((MethodInvoker)
delegate
{
pbFileProgress.Value = args.PercentDone;
});
Кроме того, этот набор методов работал для небольших файлов.
private delegate void SetProgressBarCallback(int percentDone);
public void UpdateProgressBar(object send, UploadProgressArgs args)
{
if (pbFileProgress.InvokeRequired)
{
var d = new SetProgressBarCallback(ProgressBarUpdate);
BeginInvoke(d, new object[] { args.PercentDone });
}
else
{
ProgressBarUpdate(args.PercentDone);
}
}
public void ProgressBarUpdate(int percentDone)
{
pbFileProgress.Value = percentDone;
}
Но опять же, все просто зависает, если я пытаюсь увеличить файлы.