Kapparina Ответов: 3

Как сделать так, чтобы моя программа не зависала во время вычислений ?


Привет,
Поэтому я повторяю этот код 10 раз.
Как я могу сделать так, чтобы моя программа не зависала, а вместо этого запускалась симпатичная панель прогресса.
Не знаю, ясно ли я говорю, Извините :)

Что я уже пробовал:

percent_wins = (Double.Parse(string) / (Double.Parse(string) + Double.Parse(string))) * 100;

3 Ответов

Рейтинг:
28

OriginalGriff

Честно говоря, этот код - даже выполненный десять раз - даже не должен быть заметен с точки зрения пользовательского интерфейса и, вероятно, не может быть индивидуально ускорен, поскольку накладные расходы на обработку задач, вероятно, превысят требуемое время обработки.

Итак, начните с того, что у вас есть и сколько времени это на самом деле занимает: Класс секундомера[^] предназначен для такого рода вещей, поэтому "поперчите" свой код либерально с помощью tem и узнайте, сколько времени он на самом деле занимает и где. Когда вы это знаете, у вас есть метрика, чтобы начать улучшать вещи, но пока у вас ее нет, вы просто предполагаете, что "это такой бит, должно быть", и есть хороший шанс, что вы очень ошибаетесь!


Рейтинг:
2

OriginalGriff

Причина моего голоса один: Вы ведь знаете, что целочисленные и двойные значения очень разные, не так ли?

Рейтинг:
0

Patrice T

Цитата:
Как сделать так, чтобы моя программа не зависала во время вычислений ?

1 решение состоит в том, чтобы резко оптимизировать этот код.
percent_wins = (Double.Parse(string) / (Double.Parse(string) + Double.Parse(string))) * 100;

К
WhatEver = (Double.Parse(string);
percent_wins = (WhatEver / (WhatEver + WhatEver)) * 100;

Потом
WhatEver = (Double.Parse(string);
percent_wins = (WhatEver / (2 * WhatEver)) * 100;

Потом
WhatEver = (Double.Parse(string);
percent_wins = (1 / 2 ) * 100;

Потом
percent_wins = 100 / 2;

Потом
percent_wins = 50;

Это именно то, что делает ваша строка кода. Он больше не должен замерзать.