Уведомления, когда процесс файл findfiles закончил
У меня есть многопоточное приложение, в котором я создал шаблон производителя / потребителя для обработки XML-файлов и т. д.
Что я хочу знать, это то, что будет хорошим подходом для обновления пользовательского интерфейса и когда процесс завершится.
Должен ли я перейти к потоковому подходу и создать барьер и ждать завершения всех задач или я должен просто создать событие / делегат и получить пользовательский интерфейс, чтобы поймать это для обоих обновлений пользовательского интерфейса / принуждения
2 ответа:
Вы можете проверить Signalr , который позволяет получать PUSH-уведомления для клиентов.
Извините, этот ответ предполагал Windows Forms, потому что не было asp.net сначала тег. Надеюсь, кто-то даст хороший ответ asp.net как хорошо.
Вы можете использовать форму.Вызовите (), чтобы обновить материал из потока без GUI, вот простой пример:
private void Form1_Load(object sender, EventArgs e) { Thread thread = new Thread(DoStuff); thread.Start(); } void DoStuff() { Thread.Sleep(1000); this.Invoke(new Action(() => MessageBox.Show("Hey, this was invoked"))); }
С помощью Invoke можно делать практически все, что угодно с формой, она запускает вызываемое действие в потоке формы. Так что вы можете изменить свой текст статуса или что-то в этом роде. Конечно, вы не должны иметь свой "бизнес-логика" внутри класса Form, и вы не должны использовать поток.Сон, я просто показываю очень простой факт, что вы можете вернуться к потоку пользовательского интерфейса таким образом.
Что касается того, должны ли вы ждать завершения всех задач, прежде чем что-либо делать, или показывать обновления статуса по мере их выполнения, это действительно зависит от вас. Мне нравится показывать обновления в пользовательском интерфейсе, когда это возможно, чтобы пользователь знал, что происходит. Также хорошо иметь индикатор выполнения, если что-то происходит, что пользователь может, и ждет. Индикатор выполнения может быть просто шатром, если у вас нет хорошего способа показать реальный прогресс.