Login
Вопрос по С#
29.08.09 13:15
Подскажите пожалуйста как можно написать программу на С# по нижеследующей картинке. В общем нужно при нажатии на кнопку Start пошел прогресс от 0 до 100%( Progress-Bar), а внизу чтобы при этом шли цифрами количество процентов(Label). И нужно чтобы в то время пока идет прогресс(и соответственно проценты) нельзя бы былобы его остановить кнопками (Button) "Start" и "Zuruecksetzen". А с помощью кнопки "Schlissen" все это дело закрыть.
NEW 29.08.09 15:05
in Antwort monstrello72 29.08.09 13:15
все очень просто, вставь в проект таймер, изначально его отключив,
в нем можно создать евентфункцию "тик",
сделать чтоб тик вызывался например каждую секунду.
когда давиш на кнопку старт запускаеш таймер и обнуляеш счетчик.
и enable = false на соответсвующие кнопки.
каждый раз когда будет тик инкрементируеш счетчик,
изменяеш Progress-Bar, выводиш проценты и если счетчк дошел до максимума.
то останавливаеш таймер, счетчик и разрешаеш давить на все кнопки
как то так... удачи!
в нем можно создать евентфункцию "тик",
сделать чтоб тик вызывался например каждую секунду.
когда давиш на кнопку старт запускаеш таймер и обнуляеш счетчик.
и enable = false на соответсвующие кнопки.
каждый раз когда будет тик инкрементируеш счетчик,
изменяеш Progress-Bar, выводиш проценты и если счетчк дошел до максимума.
то останавливаеш таймер, счетчик и разрешаеш давить на все кнопки
как то так... удачи!
все что вы сделаете в интернете может быть использовано против вас!
NEW 29.08.09 15:12
in Antwort viger2 29.08.09 15:05
Я не знаю как вообще в виде кода запустить Progress и Проценты( как это в виде кода сделать). Конечно спасибо, но нельзя быбыло это сделать в виде кода( я новичек в программировании)
NEW 29.08.09 15:15
in Antwort monstrello72 29.08.09 15:12
Я не знаю как вообще в виде кода запустить Progress и Проценты( как это в виде кода сделать).
-----
Progress запускать не надо. Он всего лишь отрисовывает что ему задано - смотри минимальное, максимальное и текущее значение.
Ну а по поводу Процентов - это в школу, в 5-й класс...
-----
Progress запускать не надо. Он всего лишь отрисовывает что ему задано - смотри минимальное, максимальное и текущее значение.
Ну а по поводу Процентов - это в школу, в 5-й класс...
NEW 29.08.09 15:23
in Antwort monstrello72 29.08.09 15:12
в виде кода, немогу сорри, нет времени...
у прогрессбара есть имя свойсва, их можно редактировать в самом ГУИ дизайнере,
например начальное и максимальное значение.
а также с ними можно "общатся" из кода (если конечно код имеет право допуска)
в коде вводиш имя потом точку и автоматически паказываются все публичные переменные
и функции этого класса. Выбираеш там "value" кажется и туда пишеш проценты...
у прогрессбара есть имя свойсва, их можно редактировать в самом ГУИ дизайнере,
например начальное и максимальное значение.
а также с ними можно "общатся" из кода (если конечно код имеет право допуска)
в коде вводиш имя потом точку и автоматически паказываются все публичные переменные
и функции этого класса. Выбираеш там "value" кажется и туда пишеш проценты...
все что вы сделаете в интернете может быть использовано против вас!
NEW 29.08.09 18:23
in Antwort viger2 29.08.09 15:23
Вот что я накопал в Hilfe,мой ProgressBar называется (Name)Progress. Проценты идут так: нажимаю Start , и примерно через секунд 30 (не бежит от 1 до 100) появляется 100. Подправьте пожалуйста где что не так( а Прогресс вообще не бежит)
private void Start_Click(object sender, EventArgs e)
{
Progress1.Visible = true;
Progress1.Minimum = 1;
Progress1.Maximum = Progress.100;
Progress1.Value = 1;
Progress1.Step = 1;
for (int i = 1; i <= Progress.100; i++);
{
System.Threading.Thread.Sleep(100);
Prozent.Text = i.ToString();
if (CopyFile(Progress[i - 1]) == true);
Progress1->PerformStep();
}
}
private void Start_Click(object sender, EventArgs e)
{
Progress1.Visible = true;
Progress1.Minimum = 1;
Progress1.Maximum = Progress.100;
Progress1.Value = 1;
Progress1.Step = 1;
for (int i = 1; i <= Progress.100; i++);
{
System.Threading.Thread.Sleep(100);
Prozent.Text = i.ToString();
if (CopyFile(Progress[i - 1]) == true);
Progress1->PerformStep();
}
}
NEW 29.08.09 18:51
in Antwort monstrello72 29.08.09 18:23
NEW 29.08.09 19:12
А как это сделать?
in Antwort viger2 29.08.09 15:05
В ответ на:
в нем можно создать евентфункцию "тик",
сделать чтоб тик вызывался например каждую секунду.
в нем можно создать евентфункцию "тик",
сделать чтоб тик вызывался например каждую секунду.
А как это сделать?
NEW 29.08.09 19:27
in Antwort monstrello72 29.08.09 19:08
А не, ошибся. Progress1.PerformStep(); обновляет.
А вот это тебе все и портит.
for (int i = 1; i <= Progress.100; i++);
Ты на каком языке вообще пишешь?
А вот это тебе все и портит.
for (int i = 1; i <= Progress.100; i++);
Ты на каком языке вообще пишешь?
NEW 29.08.09 19:45
in Antwort monstrello72 29.08.09 19:39
NEW 29.08.09 19:53
in Antwort NightWatch 29.08.09 19:45
Я точно не знаю ,т.к. нашел этот вариант в разделе помощи в Visual C#. Может подскажешь как правильно это сделать?
NEW 29.08.09 20:20
in Antwort monstrello72 29.08.09 19:53
Дык, научись копировать тогда msdn.microsoft.com/en-us/library/system.windows.forms.progressbar.perform...
NEW 29.08.09 20:32
in Antwort NightWatch 29.08.09 20:20
А что писать вместо pBar1,filenames,CopyFile
NEW 29.08.09 20:40
in Antwort monstrello72 29.08.09 20:32
NEW 29.08.09 20:51
in Antwort NightWatch 29.08.09 20:40
Насколько я понял pBar1-это имя моего ProgressBar, а Length это как я понял :100 А вот про filenames я ничего там не понял может подскажешь?
NEW 29.08.09 21:48
in Antwort monstrello72 29.08.09 18:23
короче както так...
private void Start_Click(object sender, EventArgs e)
{
Progress1.Visible = true;
Progress1.Minimum = 1;
Progress1.Maximum = 100;
Progress1.Value = 1;
Progress1.Step = 1;
for (int i = 1; i <= 100; i++);
{
System.Threading.Thread.Sleep(100);
Prozent.Text = i.ToString();
//if (CopyFile(Progress[i - 1]) == true); // нафиг ненужно
//Progress1->PerformStep(); // нафиг ненужно
Progress1.Value = i ;
}
}
private void Start_Click(object sender, EventArgs e)
{
Progress1.Visible = true;
Progress1.Minimum = 1;
Progress1.Maximum = 100;
Progress1.Value = 1;
Progress1.Step = 1;
for (int i = 1; i <= 100; i++);
{
System.Threading.Thread.Sleep(100);
Prozent.Text = i.ToString();
//if (CopyFile(Progress[i - 1]) == true); // нафиг ненужно
//Progress1->PerformStep(); // нафиг ненужно
Progress1.Value = i ;
}
}
все что вы сделаете в интернете может быть использовано против вас!
NEW 29.08.09 21:58
что именно?
в дизайнере ГУИ есть "Tools", там же где ты "брал для рисования" кнопки или процессбар и т.д.
там есть таймер, его заносиш в ГУИ, он появится правда снизу под самой формой,
потом давиш на него правой кнопкой мышки и выбираеш "проперти" (в немецкой версии кажется Eigenschaft)
в проперти есть две таб свойства и функции, давиш на функции и там допельклик на "тик"
www.c-sharpcorner.com/UploadFile/mahesh/WorkingwithTimerControlinCSharp11...
in Antwort monstrello72 29.08.09 19:08
В ответ на:
а как это сделать?
а как это сделать?
что именно?
в дизайнере ГУИ есть "Tools", там же где ты "брал для рисования" кнопки или процессбар и т.д.
там есть таймер, его заносиш в ГУИ, он появится правда снизу под самой формой,
потом давиш на него правой кнопкой мышки и выбираеш "проперти" (в немецкой версии кажется Eigenschaft)
в проперти есть две таб свойства и функции, давиш на функции и там допельклик на "тик"
www.c-sharpcorner.com/UploadFile/mahesh/WorkingwithTimerControlinCSharp11...
все что вы сделаете в интернете может быть использовано против вас!
NEW 29.08.09 22:29
интересно, откуда ты береш такие задания?
может стоит взять просто книжку типа C# за 21 день или тому подобное...
в таких книгах обычно каждый промежуточный шаг описан, что за чем делать...
просто иногда когда человек говорит "я незнаю как это зделать", невсегда знаеш что именно он незнает
а что знает... может ему просто одного промежуточного шага нехватает а может у него просто нет
именно базовых знаний... и получается что говориш на разных языках...
вспоминается случай рассказанный моим другом, как что было точно незнаю, но суть такова,
к ним приехали заказчики или партнеры из Испании, и он должен был обьяснить принцип работы их продукта
одному из испанских коллег, через пару дней им пришлось прекратить это делать, т.к. у этого
человека небыло элементарных технических знаний. Как можно обяснить человеку о микропроцессорной
системе который незнает что такое двоичная система... ? Он оказался экономистом, а отправили его
перенимать опыт только потому что он хорошо знал немецкий язык...
Я к чему это, просто попробуй поработать с книжкой где каждый шаг разжеван, и возможно будет меньше вопросов возникать.
и обучение будет намного эффективней... Хотя с другой стороны эффективность обучения будет еще намного выше если
приходится сталкиватся лбом с проблемами и решать их, как например у тебя в данном случае!
Удачи!
in Antwort monstrello72 29.08.09 13:15
В ответ на:
Подскажите пожалуйста как можно написать программу на С# по нижеследующей картинке.
Подскажите пожалуйста как можно написать программу на С# по нижеследующей картинке.
интересно, откуда ты береш такие задания?
может стоит взять просто книжку типа C# за 21 день или тому подобное...
в таких книгах обычно каждый промежуточный шаг описан, что за чем делать...
просто иногда когда человек говорит "я незнаю как это зделать", невсегда знаеш что именно он незнает
а что знает... может ему просто одного промежуточного шага нехватает а может у него просто нет
именно базовых знаний... и получается что говориш на разных языках...
вспоминается случай рассказанный моим другом, как что было точно незнаю, но суть такова,
к ним приехали заказчики или партнеры из Испании, и он должен был обьяснить принцип работы их продукта
одному из испанских коллег, через пару дней им пришлось прекратить это делать, т.к. у этого
человека небыло элементарных технических знаний. Как можно обяснить человеку о микропроцессорной
системе который незнает что такое двоичная система... ? Он оказался экономистом, а отправили его
перенимать опыт только потому что он хорошо знал немецкий язык...
Я к чему это, просто попробуй поработать с книжкой где каждый шаг разжеван, и возможно будет меньше вопросов возникать.
и обучение будет намного эффективней... Хотя с другой стороны эффективность обучения будет еще намного выше если
приходится сталкиватся лбом с проблемами и решать их, как например у тебя в данном случае!
Удачи!
все что вы сделаете в интернете может быть использовано против вас!
NEW 29.08.09 22:31
in Antwort monstrello72 29.08.09 22:18
убери точку с запятой после for (int i = 1; i <= 100; i++);
все что вы сделаете в интернете может быть использовано против вас!
NEW 29.08.09 22:47
in Antwort viger2 29.08.09 22:31
Уважаемый viger_2 спасибо за советы. Я учусь на курсах в Taylorix(изучаю С#) там нам дают такие задания. Но все-таки хотелось бы решить эту задачку. Если у тебя будет время посмотри пожалуйста(начальные условия ты знаешь).Заранее благодарен!
NEW 29.08.09 23:25
к сожалению у меня нет visual studio на домашнем компьютере.
в принципе, в своем первом посте я написал как можно действовать...
с таймером хоть чтонибудь получилось? а с твоим вторым ходом решения, что вышло? ошибок больше нет?
in Antwort monstrello72 29.08.09 22:47
В ответ на:
Я учусь на курсах в Taylorix(изучаю С#) там нам дают такие задания. Но все-таки хотелось бы решить эту задачку. Если у тебя будет время посмотри пожалуйста(начальные условия ты знаешь).Заранее благодарен!
Я учусь на курсах в Taylorix(изучаю С#) там нам дают такие задания. Но все-таки хотелось бы решить эту задачку. Если у тебя будет время посмотри пожалуйста(начальные условия ты знаешь).Заранее благодарен!
к сожалению у меня нет visual studio на домашнем компьютере.
в принципе, в своем первом посте я написал как можно действовать...
с таймером хоть чтонибудь получилось? а с твоим вторым ходом решения, что вышло? ошибок больше нет?
все что вы сделаете в интернете может быть использовано против вас!
NEW 30.08.09 10:06
in Antwort viger2 29.08.09 22:29
Вот это точно не выдает ошибок
А как сделать,чтобы в Label проценты отображались,то не знаю.
Если просто написать с Progress1.Value(i); то он ругается.Не потходит также label1.Text = i ; так как он не хочет int в string конвертировать
В ответ на:
private void button1_Click(object sender, EventArgs e)
{
Progress1.Visible = true;
Progress1.Minimum = 1;
Progress1.Maximum = 100;
Progress1.Value = 1;
Progress1.Step = 1;
for (int i = 1; i <= 100; i++)
{
System.Threading.Thread.Sleep(100);
Progress1.Value = i;
}
}
private void button1_Click(object sender, EventArgs e)
{
Progress1.Visible = true;
Progress1.Minimum = 1;
Progress1.Maximum = 100;
Progress1.Value = 1;
Progress1.Step = 1;
for (int i = 1; i <= 100; i++)
{
System.Threading.Thread.Sleep(100);
Progress1.Value = i;
}
}
А как сделать,чтобы в Label проценты отображались,то не знаю.
Если просто написать с Progress1.Value(i); то он ругается.Не потходит также label1.Text = i ; так как он не хочет int в string конвертировать
NEW 30.08.09 11:29
in Antwort Alexa- 30.08.09 10:06
В ответ на:
Если просто написать с Progress1.Value(i); то он ругается.
Может потому, что у ProgressBar такого метода нет?Если просто написать с Progress1.Value(i); то он ругается.
В ответ на:
Не потходит также label1.Text = i ; так как он не хочет int в string конвертировать
А если так? label1.Text = i.ToString();Не потходит также label1.Text = i ; так как он не хочет int в string конвертировать
NEW 30.08.09 12:31
in Antwort NightWatch 30.08.09 11:29
Я тоже так сделал. Но он при этом показывает когда полосочка прошла цифру 100(нет такого , чтобы от 1до 100)
NEW 30.08.09 12:40
В свойствах таймера нет тик , есть Tag, если это одно и тоже, то как его использовать. А с прогресс баром с помощью Alexa все получилось!!!(кстати приветствую старую знакомую!!! и большое спасибо за прогрессбар!!!) Теперь при нажатии на кнопку Start идет прогресс(Label стоит пока прогресс идет и в конце появляется 100)
in Antwort viger2 29.08.09 23:25
В ответ на:
с таймером хоть чтонибудь получилось?
с таймером хоть чтонибудь получилось?
В свойствах таймера нет тик , есть Tag, если это одно и тоже, то как его использовать. А с прогресс баром с помощью Alexa все получилось!!!(кстати приветствую старую знакомую!!! и большое спасибо за прогрессбар!!!) Теперь при нажатии на кнопку Start идет прогресс(Label стоит пока прогресс идет и в конце появляется 100)
NEW 30.08.09 12:53
in Antwort monstrello72 30.08.09 12:31
private void button1_Click(object sender, EventArgs e)
{
Progress1.Visible = true;
Progress1.Minimum = 1;
Progress1.Maximum = 100;
Progress1.Value = 1;
Progress1.Step = 1;
for (int i = 1; i <= 100; i++)
{
Progress1.PerformStep();
label1.Text = i.ToString();
label1.Update();
System.Threading.Thread.Sleep(100);
}
}
{
Progress1.Visible = true;
Progress1.Minimum = 1;
Progress1.Maximum = 100;
Progress1.Value = 1;
Progress1.Step = 1;
for (int i = 1; i <= 100; i++)
{
Progress1.PerformStep();
label1.Text = i.ToString();
label1.Update();
System.Threading.Thread.Sleep(100);
}
}
NEW 30.08.09 12:55
in Antwort monstrello72 30.08.09 12:40
NEW 30.08.09 13:21
in Antwort NightWatch 30.08.09 12:55
Cпасибо NightWatch!!! Теперь проценты идут!!!
А как сделать, чтобы срабатывали Zuruecksetzen и Schlissen?
А как сделать, чтобы срабатывали Zuruecksetzen и Schlissen?
NEW 30.08.09 13:25
Progress1.Visible = false;
Progress1.Value = 1;
например
in Antwort monstrello72 30.08.09 13:21, Zuletzt geändert 30.08.09 13:26 (NightWatch)
В ответ на:
Zuruecksetzen
Zuruecksetzen
Progress1.Visible = false;
Progress1.Value = 1;
В ответ на:
Schlissen
this.Close();Schlissen
например
NEW 30.08.09 13:29
я же написал,
давиш правой кнопкой мышки на таймер выбираеш проперти
а там на Event или события..

доппельклик на клетку радом с "Тick" и ты автоматически попадаеш в функцию в самом теле программы...
in Antwort monstrello72 30.08.09 12:40
В ответ на:
В свойствах таймера нет тик , есть Tag,
В свойствах таймера нет тик , есть Tag,
я же написал,
давиш правой кнопкой мышки на таймер выбираеш проперти
а там на Event или события..

доппельклик на клетку радом с "Тick" и ты автоматически попадаеш в функцию в самом теле программы...
все что вы сделаете в интернете может быть использовано против вас!
NEW 30.08.09 13:36
in Antwort monstrello72 30.08.09 13:21, Zuletzt geändert 30.08.09 13:38 (viger2)
кстати, такой путь решения без разделения процессов,
т.е. в где в функцию
вставляются процесс который длится долгое время ( в данном случае 10 секунд System.Threading.Thread.Sleep(100) умножить 100 раз)
очень нерекомендуется! поэтому лучше пользоватся таймером.
ГУИ нежелательно прерывать на длительное время.
т.е. в где в функцию
В ответ на:
private void button1_Click(object sender, EventArgs e)
private void button1_Click(object sender, EventArgs e)
вставляются процесс который длится долгое время ( в данном случае 10 секунд System.Threading.Thread.Sleep(100) умножить 100 раз)
очень нерекомендуется! поэтому лучше пользоватся таймером.
ГУИ нежелательно прерывать на длительное время.
все что вы сделаете в интернете может быть использовано против вас!
NEW 30.08.09 13:40
in Antwort viger2 30.08.09 13:36, Zuletzt geändert 30.08.09 13:52 (NightWatch)
NEW 30.08.09 14:02
in Antwort viger2 30.08.09 13:36
поэтому лучше пользоватся таймером.
------
Почитай внимательнее про таймер. Особенно в плане возможных казусов...
Уверяю тебя - будешь весьма удивлен...
------
Почитай внимательнее про таймер. Особенно в плане возможных казусов...
Уверяю тебя - будешь весьма удивлен...
NEW 30.08.09 14:15
для данного примера может и ненужно, но
цель процессбара графически отображать состояние какогото параллельного процесса,
например процесс передачи данных, который в неопределенный момент времени
"говорит" сейчас прошло там 20% данных и т.д.
и что все это время ГУИ должна быть в подвешенном состоянии?
а при помоши таймера как раз можно и симулировать такой внешний процесс,
пусть он и несовсем асинхронен...
надеюсь я понятно выразился?....
in Antwort NightWatch 30.08.09 13:40
В ответ на:
Почему? Не вижу связи.
Почему? Не вижу связи.
для данного примера может и ненужно, но
цель процессбара графически отображать состояние какогото параллельного процесса,
например процесс передачи данных, который в неопределенный момент времени
"говорит" сейчас прошло там 20% данных и т.д.
и что все это время ГУИ должна быть в подвешенном состоянии?
а при помоши таймера как раз можно и симулировать такой внешний процесс,
пусть он и несовсем асинхронен...
надеюсь я понятно выразился?....
все что вы сделаете в интернете может быть использовано против вас!
NEW 30.08.09 14:17
in Antwort viger2 30.08.09 14:15, Zuletzt geändert 30.08.09 14:17 (NightWatch)
NEW 30.08.09 14:25
согласен, казусы могут непременно быть, например при отладке в реальном маштабе вемени,
и наверняка требуются публичные переменные для счетчка и возможно дополнительная логика
которая включает/выключает таймер, запрещает "тик" на время пока он необработаеся и т.д.
Но согласись, что для данного случая таймер, который дает "тик" каждые 0.5 сек вполне достаточно,
чтобы симулировать внещний процесс? или?
in Antwort Murr 30.08.09 14:02
В ответ на:
Почитай внимательнее про таймер. Особенно в плане возможных казусов...
Уверяю тебя - будешь весьма удивлен...
Почитай внимательнее про таймер. Особенно в плане возможных казусов...
Уверяю тебя - будешь весьма удивлен...
согласен, казусы могут непременно быть, например при отладке в реальном маштабе вемени,
и наверняка требуются публичные переменные для счетчка и возможно дополнительная логика
которая включает/выключает таймер, запрещает "тик" на время пока он необработаеся и т.д.
Но согласись, что для данного случая таймер, который дает "тик" каждые 0.5 сек вполне достаточно,
чтобы симулировать внещний процесс? или?
все что вы сделаете в интернете может быть использовано против вас!
NEW 30.08.09 14:30
с потоками еще сложнее работать, во всяком случае для начинающего программиста,
а таймер уже готовый класс, где нужно минимум знаний... главное его запустить в
нужное время с нужными параметрами, обработать тик и выключить когда
он будет уже ненужен...
in Antwort NightWatch 30.08.09 14:17
В ответ на:
В таком случае таймер здесь абсолютно не верный подход.
Используются потоки.
В таком случае таймер здесь абсолютно не верный подход.
Используются потоки.
с потоками еще сложнее работать, во всяком случае для начинающего программиста,
а таймер уже готовый класс, где нужно минимум знаний... главное его запустить в
нужное время с нужными параметрами, обработать тик и выключить когда
он будет уже ненужен...
все что вы сделаете в интернете может быть использовано против вас!
NEW 30.08.09 14:37
Для минимума хватит варианта без таймера.
in Antwort viger2 30.08.09 14:30
В ответ на:
где нужно минимум знаний...
Для минимума знаний понятие о разделении процессов не многова-то ли?где нужно минимум знаний...
Для минимума хватит варианта без таймера.
NEW 30.08.09 14:40
возможно ты и прав.
in Antwort NightWatch 30.08.09 14:37
В ответ на:
Для минимума хватит варианта без таймера.
Для минимума хватит варианта без таймера.
возможно ты и прав.
все что вы сделаете в интернете может быть использовано против вас!
NEW 30.08.09 16:41
in Antwort viger2 30.08.09 14:40
По порядку: этот Tick нужно отдельно запускать от Start кнопки или в тело хода Start его какимто образом вставлять?
NEW 30.08.09 19:51
in Antwort viger2 30.08.09 14:25
который дает "тик" каждые 0.5 сек
------
Одна из особенностей, об которых надо было бы прочитать, заключается в
том, что хочет - дает, не хочет - не дает... и делает это непредсказуемо...
------
Одна из особенностей, об которых надо было бы прочитать, заключается в
том, что хочет - дает, не хочет - не дает... и делает это непредсказуемо...
NEW 30.08.09 19:56
in Antwort monstrello72 30.08.09 17:27
Очень хотелось бы с Timer разобраться
-----
Читай документацию. Вдумчиво и внимательно. Стараясь понять что написано.
Бо, если ты будешь когда-нибудь программировать, то нянькаться с тобой не
будут - дадут задачу, сроки и зарплату - дальше выкручивайся как умеешь...
-----
Читай документацию. Вдумчиво и внимательно. Стараясь понять что написано.
Бо, если ты будешь когда-нибудь программировать, то нянькаться с тобой не
будут - дадут задачу, сроки и зарплату - дальше выкручивайся как умеешь...
NEW 30.08.09 21:56
на практике пока такого невстречал, раньше тоже тоже с С++ дотнетовский таймер для графического интерфейса использовал,
и никогда с проблемами несталкивался, во всяком случае в незамечал, разве что иногда в дебаге в пошаговой отладке...
Сейчас специально посмотрел, MSDN вроде не о непредсказуемости таймера не пишет...
in Antwort Murr 30.08.09 19:51
В ответ на:
Одна из особенностей, об которых надо было бы прочитать, заключается в
том, что хочет - дает, не хочет - не дает... и делает это непредсказуемо...
Одна из особенностей, об которых надо было бы прочитать, заключается в
том, что хочет - дает, не хочет - не дает... и делает это непредсказуемо...
на практике пока такого невстречал, раньше тоже тоже с С++ дотнетовский таймер для графического интерфейса использовал,
и никогда с проблемами несталкивался, во всяком случае в незамечал, разве что иногда в дебаге в пошаговой отладке...
Сейчас специально посмотрел, MSDN вроде не о непредсказуемости таймера не пишет...
все что вы сделаете в интернете может быть использовано против вас!
NEW 30.08.09 22:11
in Antwort viger2 30.08.09 21:56
MSDN вроде не о непредсказуемости таймера не пишет...
------
В МСДНе должны быть описания трех различных таймеров...
Тот, который Timer из .Neta или TTimer из БСБ может "терять" тики.
------
В МСДНе должны быть описания трех различных таймеров...
Тот, который Timer из .Neta или TTimer из БСБ может "терять" тики.
NEW 30.08.09 22:16
in Antwort Murr 30.08.09 22:11, Zuletzt geändert 30.08.09 22:17 (NightWatch)
В ответ на:
Тот, который Timer из .Neta
Если имеешь в виду System.Windows.Forms.Timer, то http://msdn.microsoft.com/en-us/library/xy0zeach.aspxТот, который Timer из .Neta
NEW 30.08.09 23:05
in Antwort NightWatch 30.08.09 22:16
Это не мне - это ребятишкам.
Еще ссылочку на функцию SetTimer(?) и мультимиедийный таймер надо бы добавить...
Еще ссылочку на функцию SetTimer(?) и мультимиедийный таймер надо бы добавить...
NEW 31.08.09 08:04
in Antwort Murr 30.08.09 23:05
В ответ на:
Еще ссылочку на функцию SetTimer(?)
Ну, System.Windows.Forms.Timer - это только управляемая оболочка этой функции. Так что и ограничения те же.Еще ссылочку на функцию SetTimer(?)
NEW 31.08.09 17:06
in Antwort NightWatch 31.08.09 08:04
это только управляемая оболочка этой функции.
-----
Это детали реализации и знать оные вообщем-то где-то даже и вредно... но все же надо - в целях понимания "как оно работает".
-----
Это детали реализации и знать оные вообщем-то где-то даже и вредно... но все же надо - в целях понимания "как оно работает".
NEW 05.09.09 22:11
да это он...
...your application may not get timer events as often as the Interval property specifies.
The interval is not guaranteed to elapse exactly on time...
ну что, господа
NightWatch и
Murr вы оказались всетаки правы! Действительно оказалось что на дотнетовский таймер нельзя на 100% пологатся. Причем на практике по иронии судьбы я убеделся в этом как раз на этой неделе, когда делал тест в виртуальной машине под другой операционкой. Причем сначало толком немог понять в чем причина, почему ГУИ так редко обновляется, и действительно дело оказалось в таймере... хотя пришлось немного поизгалятся, что бы это подтвердить
т.к. в операционке на vmware практически небыло возможности для дебага,
а на "основной" машине все работало почти без проблем.
Чтож, данный случай подтверждает правило что если чтото невидиш то это неозначает что этого нет.
Я просто недумал что тут могут возникнуть проблемы, года два назад я неделями напролет "охотился" с осциллоскопом за данными на линиях а триггером как раз была программка под дотнетом с таймером, и к счастью или к сожалению мне недовелось усомниться в надежности таимера... наверное мне просто тогда повезло....
in Antwort NightWatch 30.08.09 22:16
В ответ на:
Если имеешь в виду System.Windows.Forms.Timer, то http://msdn.microsoft.com/en-us/library/xy0zeach.aspx
Если имеешь в виду System.Windows.Forms.Timer, то http://msdn.microsoft.com/en-us/library/xy0zeach.aspx
да это он...
...your application may not get timer events as often as the Interval property specifies.
The interval is not guaranteed to elapse exactly on time...
ну что, господа
NightWatch и
Murr вы оказались всетаки правы! Действительно оказалось что на дотнетовский таймер нельзя на 100% пологатся. Причем на практике по иронии судьбы я убеделся в этом как раз на этой неделе, когда делал тест в виртуальной машине под другой операционкой. Причем сначало толком немог понять в чем причина, почему ГУИ так редко обновляется, и действительно дело оказалось в таймере... хотя пришлось немного поизгалятся, что бы это подтвердить
т.к. в операционке на vmware практически небыло возможности для дебага,а на "основной" машине все работало почти без проблем.
Чтож, данный случай подтверждает правило что если чтото невидиш то это неозначает что этого нет.
Я просто недумал что тут могут возникнуть проблемы, года два назад я неделями напролет "охотился" с осциллоскопом за данными на линиях а триггером как раз была программка под дотнетом с таймером, и к счастью или к сожалению мне недовелось усомниться в надежности таимера... наверное мне просто тогда повезло....
все что вы сделаете в интернете может быть использовано против вас!
NEW 05.09.09 22:37
Есть мнение, что утверждение некорректно. Win CE позиционируется как RTOS. Там, вероятно, тики таймеров не теряются. И в .Net соответственно тоже.
in Antwort viger2 05.09.09 22:11
В ответ на:
Действительно оказалось что на дотнетовский таймер нельзя на 100% пологатся.
Действительно оказалось что на дотнетовский таймер нельзя на 100% пологатся.
Есть мнение, что утверждение некорректно. Win CE позиционируется как RTOS. Там, вероятно, тики таймеров не теряются. И в .Net соответственно тоже.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 06.09.09 11:30
Смотря как таймер реализован.
Если они напрямую использовали rt функции ядра - да, в чем я сомневаюсь.
in Antwort voxel3d 05.09.09 22:37
В ответ на:
Там, вероятно, тики таймеров не теряются. И в .Net соответственно тоже.
Там, вероятно, тики таймеров не теряются. И в .Net соответственно тоже.
Смотря как таймер реализован.
Если они напрямую использовали rt функции ядра - да, в чем я сомневаюсь.
NEW 06.09.09 17:32
in Antwort viger2 05.09.09 22:11
В ответ на:
Действительно оказалось что на дотнетовский таймер нельзя на 100% пологатся.
.NET здесь не при чем.Действительно оказалось что на дотнетовский таймер нельзя на 100% пологатся.
NEW 06.09.09 17:44
Реализация System.Windows.Forms.Timer (а точнее SetTimer) подразумевает, что тики приходят в виде оконного сообщения WM_TIMER. Отсюда и проблемы.
Если ограничения не устраивают msdn советует использовать System.Threading.Timer. Этот таймер использует коллбэки и точнее, чем оконный.
in Antwort voxel3d 05.09.09 22:37
В ответ на:
Там, вероятно, тики таймеров не теряются
Каких таймеров?Там, вероятно, тики таймеров не теряются
Реализация System.Windows.Forms.Timer (а точнее SetTimer) подразумевает, что тики приходят в виде оконного сообщения WM_TIMER. Отсюда и проблемы.
Если ограничения не устраивают msdn советует использовать System.Threading.Timer. Этот таймер использует коллбэки и точнее, чем оконный.
NEW 06.09.09 21:23
ну это как угодно, этот таймер ведь часть дот нета...
in Antwort NightWatch 06.09.09 17:32
В ответ на:
.NET здесь не при чем.
.NET здесь не при чем.
ну это как угодно, этот таймер ведь часть дот нета...
все что вы сделаете в интернете может быть использовано против вас!




