Есть приложение, в нем обрабатываются большие данные в цикле, если цикл идет достаточно долго то приложение зависает и не обновляется его вид пока метод не завершится. Как сделать это правильно, чтобы программа не виснула?
Asked
Active
Viewed 86 times
0
-
2запустить обработку отдельным потоком. Например, на пуле потоков. – tym32167 Jan 10 '20 at 04:44
-
1использовать асинхронность. запускать данный цикл в отдельном потоке. тогда не будет блокировки интерфейса приложения. Выложи код. – Денис Матюшкин Jan 10 '20 at 04:49
-
2@tym32167 а использовать асинхронный метод тоже вариант? – UndefFox Jan 10 '20 at 05:22
-
Проще всего какой-нибудь BackgroundWorker использовать, а вообще вариантов много, уже перечислили. – CrazyElf Jan 10 '20 at 09:21
1 Answers
2
- Если вы используете приложение для обработки больших данных из БД, то используйте асинхронность
- Если вам надо делать обработку данных только на вашей машине, то используйте параллельные вычисления
Также обратите внимание на объем обрабатываемых данных: при использовании больше чем 1 ГБ памяти, рекомендуется использовать x64 сборку