Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
WizarД
53 / 56 / 10
Регистрация: 07.02.2011
Сообщений: 556
Записей в блоге: 1
1

Выполнение метода несколько раз

21.03.2011, 20:22. Просмотров 2616. Ответов 10
Метки нет (Все метки)

Возможно ли?
Создаем статический метод.
В текстбокс вставляем число желаемых выполнений(ну т.е. сколько раз выполнять).Нажимаем button1 и у нас выполняется метод столько раз, сколько написано в текстбоксе.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2011, 20:22
Ответы с готовыми решениями:

Прервать выполнение метода
Как прервать выполнение метода, если нет доступа к исходникам метода. Метод выполняется 1 мин,...

Автоматическое выполнение метода
При инжекте dll в процесс должен выполнятся метод в этой dll. Где-то слышал, что такое возможно....

Параллельное выполнение метода
Здравствуйте! Пишу многопоточное приложение, в котором есть основной поток, поток управляющий...

Непрерывное выполнение метода
Есть метод, который считывает данные с определенных юрлов. Но данные по этим адресам постоянно...

Проверить выполнение метода
Есть такой метод: public static Boolean sendSMS(String to, String text) В его теле, как вы уже...

10
Laak
начал понимать msdn
55 / 55 / 6
Регистрация: 11.03.2010
Сообщений: 232
21.03.2011, 20:34 2
C#
1
2
3
4
5
6
7
 private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i <= (Convert.ToInt16(textBox1.Text)); i++)
            {
                // Нужный метод
            }
        }
Добавлено через 14 секунд
Вроде как -то так.!?
1
ArtOfLife
138 / 138 / 26
Регистрация: 09.10.2009
Сообщений: 261
21.03.2011, 21:47 3
Цитата Сообщение от Laak Посмотреть сообщение
C#
1
2
3
4
5
6
7
 private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i <= (Convert.ToInt16(textBox1.Text)); i++)
            {
                // Нужный метод
            }
        }
Добавлено через 14 секунд
Вроде как -то так.!?
Все же позволю себе немного подкорректировать. Так будет правильней:
C#
1
2
3
4
5
6
7
8
9
10
        private void button1_Click(object sender, EventArgs e)
        {
            int rBorder = 0;
            int.TryParse(textBox1.Text, out rBorder);
 
            for (int i = 0; i < rBorder; i++)
            {
                // Нужный метод
            }
        }
0
Laak
начал понимать msdn
55 / 55 / 6
Регистрация: 11.03.2010
Сообщений: 232
21.03.2011, 21:58 4
Если не секрет, это вы добавили некую проверку на правильность ввода ?
0
21.03.2011, 21:58
Koran
мастер топоров
895 / 720 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
21.03.2011, 22:24 5
ещё уточню:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
 
namespace TempConsoleProject {
    class Program {
        static void Main() {
            int rBorder = 0;
            bool b = int.TryParse(Console.ReadLine(), out rBorder);
            if (b) {
                for (int i = 0; i < rBorder; i++) {
                    Console.WriteLine(i);
                }
            }
            Console.ReadKey();
        }
    }
}
Добавлено через 2 минуты
этим самым мы проверяем введено ли в текстбокс или куда там число, а не строка или просто символ ) хотя если ввести дробне число, то оно всё равно пропарсится в инт
0
SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
Завершенные тесты: 2
22.03.2011, 09:24 6
TryParse методы есть у многих типов данных, например int, bool, double, Enum.
0
ArtOfLife
138 / 138 / 26
Регистрация: 09.10.2009
Сообщений: 261
22.03.2011, 09:35 7
Цитата Сообщение от Laak Посмотреть сообщение
Если не секрет, это вы добавили некую проверку на правильность ввода ?
Обработка возможных исключений некорректного ввода в textbox (например, нецифровых символов). Да и правая граница была неправильная. Мы ведь нумеруем с нуля, а вы строго включили правый предел в цикл, т.е. при вводе 5, мы бы выполнили 6 итераций, вместо 5.

Цитата Сообщение от Koran Посмотреть сообщение
ещё уточню:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
 
namespace TempConsoleProject {
    class Program {
        static void Main() {
            int rBorder = 0;
            bool b = int.TryParse(Console.ReadLine(), out rBorder);
            if (b) {
                for (int i = 0; i < rBorder; i++) {
                    Console.WriteLine(i);
                }
            }
            Console.ReadKey();
        }
    }
}
Добавлено через 2 минуты
этим самым мы проверяем введено ли в текстбокс или куда там число, а не строка или просто символ ) хотя если ввести дробне число, то оно всё равно пропарсится в инт
Я намеренно опустил булевскую проверку результата. Она лишняя, ибо при значении false, в out-переменную будет записываться 0, и цикл завершится, не начинаясь. Исключений, при этом, тоже не возникнет.
0
mak326428
44 / 44 / 3
Регистрация: 04.02.2011
Сообщений: 199
22.03.2011, 14:47 8
Лучше используйте делегаты, они лучше.

C#
1
public delegate void MyDelegate();
Сам метод:
C#
1
2
3
4
public void Handler()
{
   // нужный код
}
Потом делаем так(1-й вариант):
C#
1
2
3
4
5
MyDelegate mydel  new MyDelegate(Handler);
            for (int i = 0; i < Convert.ToInt32(textBox1.Text); i++)
                        {
                               mydel();
                        }
2 вариант:
C#
1
2
3
4
5
            MyDelegate mydel  new MyDelegate(Handler);
            for (int i = 0; i < int.Parse(textBox1.Text); i++)
                        {
                               mydel();
                        }
Ну, или просто 3-й вариант:
C#
1
2
3
4
            for (int i = 0; i < int.Parse(textBox1.Text); i++)
                        {
                               Handler();
                        }
Код писал здесь, так что могут быть ошибки

Добавлено через 1 минуту
Тут лучше тем, что работайте с методом, а не в цикле.
0
sigmov
579 / 366 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
Завершенные тесты: 2
22.03.2011, 15:48 9
Цитата Сообщение от Laak Посмотреть сообщение
C#
1
....for (int i = 0; i <= (Convert.ToInt16(textBox1.Text)); i++).......
Добавлено через 14 секунд
Вроде как -то так.!?
Единственно что беспантово - на каждой итерации число будет заново парситься(дополнительная ненужная работа для процессора).
0
Laak
начал понимать msdn
55 / 55 / 6
Регистрация: 11.03.2010
Сообщений: 232
22.03.2011, 19:22 10
sigmov, Тут уже вроде решили эту проблему сделав так int.Parse(textBox1.Text)
0
Koran
мастер топоров
895 / 720 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
23.03.2011, 00:59 11
ArtOfLife, то что при неудачном парсе переменной присваивается ноль я не уточнял для себя. вообще этим методом не приходилось пользоваться, потому и проверял

mak326428, чем принципиально использование делегата в данном примере лучше вызова самой функции? делегат-то в итоге функцию и вызывает. ну разве что мы будем проводить асинхронные операции - тогда можно и делегатом побаловаться
0
23.03.2011, 00:59
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2011, 00:59

Выполнение метода в другом потоке
Есть один синхронный метод из сторонней dllки, принимающий на вход массив байт и возвращающий...

Периодическое выполнение метода, но не таймер
Здравствуйте. Может глупый вопрос, но мне интересно. В потоке выполняется цикл while с условием...

Выполнение метода спустя 60 секунд
Добрый вечер! Не знаю как реализовать выполнение метода через 60 секунд, после выполнения условия....


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.