Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 14.12.2013
Сообщений: 87

Как правильно организовать подсчет времени используя StopWatch?

26.10.2017, 22:24. Показов 1183. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! В моей программе в секундах указывается ограничение по времени - 6 секунд. Мне надо, чтобы StopWatch считал выполнение задачи в программе в секундах и если за ограниченное время программа до конца не выполнила свою задачу, то выводится сообещение(ответ-да, добавляется 10 секунд к 6, нет - выход). Ошибка в том, что на ограничение по времени программа вообще не обращает внимания. Если можно, помогите пожалуйста правильно расставить sw.Start(), sw.Stop().
Вот отрывок кода:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
f = funcBox.Text
        a = Decimal.Parse(LeftEndPointBox.Text)
        b = Decimal.Parse(RightEndPointBox.Text)
        tol = Double.Parse(ToleranceBox.Text)
        k_max1 = Integer.Parse(k_maxBox.Text)
        k_max2 = k_max1
        timelimit = Double.Parse(Time_limit.Text)
        f1 = Func(a)
        f2 = Func(b)
        If (Math.Sign(f1) = Math.Sign(f2)) Then
            MessageBox.Show("Знаки F(a) и F(b) должны быть противоположными! Проверьте [a,b]!")
        Else
            While (k < k_max1 And (b - a) > tol)
                sw.Start()
                k = k + 1
                i = i + 1
                m = a + ((b - a) / 2)
                f1 = Func(a)
                f3 = Func(m)
 
                If Sign(Func(a)) = Sign(Func(m)) Then
                    a = m
                Else
                    b = m
                End If
 
                If (k = k_max1) Then
                    sw.Stop()
                    question = "Недостаточно итераций для точного решения! Увеличить кол-во итераций?"
                    mstyle = MsgBoxStyle.YesNo
                    questionres = MsgBox(question, mstyle)
                    If questionres = MsgBoxResult.Yes Then
                        k_max1 += k_max2
                    End If
                End If
                sw.Start()
                If (timelimit = (sw.Elapsed.Milliseconds / 1000)) Then
                    sw.Stop()
 
                    question = "Не хватает времени для точного решения, добавить время?"
                    mstyle = MsgBoxStyle.YesNo
                    questionres = MsgBox(question, mstyle)
                    If questionres = MsgBoxResult.Yes Then
                        timelimit = timelimit + 10000
                    Else
                        Exit While
                    End If
                End If
                ProgressBar1.Visible = True
                ProgressBar1.Maximum = i + 0.1
                ProgressBar1.Value = i
                Thread.Sleep(12)
            End While
            ProgressBar1.Visible = False
            sw.Stop()
            If (Abs(b - a) > tol) Then
                sw.Stop()
                If (tol < 1.0E-28) Then
                    Label11.Text = "Программе не хватает количества итераций для нахождения решения с погрешностью " & ToleranceBox.Text
                End If
                sw.Start()
                If (timelimit <= 6000) Then
                    Label11.Text = "Программе не хватает времени для нахождения решения с погрешностью " & ToleranceBox.Text
 
                End If
            ElseIf (k < k_max1 And tol > 1.0E-29) Then
                Label11.Text = "Решение найдено!"
            End If
 
            SolutionOfTaskBox.Text = m
            AbsErrorBox.Text = Convert.ToSingle(Abs(b - a))
            NumberOfIterationsBox.Text = k
            ValueOfFunctionBox.Text = Func(m)
            ElapsedTimeBox.Text = Math.Round((sw.Elapsed.Milliseconds / 1000), 1)
            sw.Reset()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.10.2017, 22:24
Ответы с готовыми решениями:

Вычисление времени затраченного на операцию (Stopwatch)
Здравствуйте, помогите определить время, затраченное на операцию, я нашел вот это: System.Diagnostics.Stopwatch...

Измерение времени сортировки методами класса StopWatch
Я хочу измерить время выполнения определенной сортировки с помощью методов класса StopWatch для 6000 элементов. Вот, что показывает мне...

Как организовать подсчет набранных символов в текстбоксе?
День добрый! Кто подскажет, как осуществить следующее? Есть два текстбокса, в первом предлагается текст для набора, во второй этот текст...

3
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
26.10.2017, 22:43
Непонятно, что это за процедура.
1. э.... Может быть вам посмотреть в сторону многопоточности, а не таймеров?
2. Проверку нужно выполнять при возникновении события TIMER.tick
0
2 / 2 / 0
Регистрация: 14.12.2013
Сообщений: 87
26.10.2017, 22:57  [ТС]
Цитата Сообщение от Winney Посмотреть сообщение
Может быть вам посмотреть в сторону многопоточности
Многопоточность не нужна, я от не знания несколько штук sw расставил, просто когда сообщение с вопросом появляется, то пока ответ не нажму, время шла. Мне без разницы что использовать StopWatch или какой-либо другой, главное правильно время считалось
0
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
26.10.2017, 23:11
Цитата Сообщение от Winney Посмотреть сообщение
Проверку нужно выполнять при возникновении события TIMER.tick
Собственно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.10.2017, 23:11
Помогаю со студенческими работами здесь

Как лучше организовать подсчет строк в файле?
Дано задание: осуществить обработку текстового файла, содержащего некоторый многостраничный текст. Результат обработки – текстовый файл,...

Как организовать подсчет статистики показов баннера?
При нажатии на баннер выполняется код ASP, так что статистика кликов проблемы не составляет. А как подсчитать статистику показов? Пробовал...

Вывод времени(как организовать)
На форму в контрол TextBlock желаю выводить время(текущее), так вот каким образом нужно правильно это организовать с точки зрения WPF....

Как организовать обновление в реальном времени?
Как организовать обновление в реальном времени? Есть объект из которого я беру значения, эти значения обновляются несколько раз за...

Как организовать Messenger реального времени?
Здравствуйте. Я хочу написать свой mesenger(хорошо бы мультипротокольный, но это потом). И у меня появилось несколько вопросов 1. Опыта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru