|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Алексей К100 потоков - это уже 100 МБ. Много это или мало? Осталось только увидеть в совете свенома где же эти 100 потоков? Лично я понял так, что поток был заведен только для того, чтобы не лочить UI. Поэтому он и один. Иногда и я так делаю, бывает проще чем с таймером. Не всегда, но бывает. Например, когда нужно не с каким то интервалом что-то дергать, а выдерживать интервал между окончанием обработки одной итерации и началом работы другой. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:43 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79Алексей К100 потоков - это уже 100 МБ. Много это или мало? Иногда и я так делаю, бывает проще чем с таймером. Не всегда, но бывает. Например, когда нужно не с каким то интервалом что-то дергать, а выдерживать интервал между окончанием обработки одной итерации и началом работы другой. Так с таймером жеж то же самое Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:49 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
PallarisArm79пропущено... Иногда и я так делаю, бывает проще чем с таймером. Не всегда, но бывает. Например, когда нужно не с каким то интервалом что-то дергать, а выдерживать интервал между окончанием обработки одной итерации и началом работы другой. Так с таймером жеж то же самое Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Ну допустим, этот метод появился только с 3.5 версии. :-) А во-вторых, каждый раз менять время? Проще Thread.Sleep. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:54 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Pallaris, Ну и, если уж совсем заморочиться, то этот метод только у Threading.Timer. А в Windows.Timer и Timers.Timer такого метода нет, я только что проверил. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:57 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79А в Windows.Timer и Timers.Timer такого метода нет, я только что проверил. Это не кошерные таймеры :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:01 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
to all Ну а чем массив таймеров не устраивает, есть ли какие ограничения на количество таймеров в системе? спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:09 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Где-то в степиНу а чем массив таймеров не устраиваетСвеном запретил + топикстартер не ищет лёгких путей. Где-то в степиесть ли какие ограничения на количество таймеров в системе?Смотря каких. Где-то в степиспасибоПожалуйста! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:15 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Где-то в степиto all Ну а чем массив таймеров не устраивает, есть ли какие ограничения на количество таймеров в системе? спасибо Массив таймеров Windows.Timer - это жесть. Она работают, если мне память не изменяет, в основном потоке, поэтому тупить будет сильно. Про остальные не знаю, но думаю, что можно, но это неоптимально. А про таймеры и особенности здесь: http://msdn.microsoft.com/en-us/magazine/cc164015.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:18 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79Массив таймеров Windows.Timer - это жесть.Что мешает по срабатыванию такого таймера запускать операции асинхронно? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:22 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79, я формовые таймеры вообще не рассматриваю, за ненадобностью, если не изменяет память в 98 были еще какие ограничения на количество таймеров в системе, щас по моему нет ( пока пул для калбеков не треснет, и то получим перехлест по дискретности) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:23 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Алексей КArm79Массив таймеров Windows.Timer - это жесть.Что мешает по срабатыванию такого таймера запускать операции асинхронно? Ничего, я просто ответил на вопрос про массив таймеров. Если он один - вопросов к нему нет. Если их 100,200,300 штук, будут проблемы, даже если операции обработки запускать асинхронно. Где-то в степия формовые таймеры вообще не рассматриваю, за ненадобностью Откуда же я знаю, что вы рассматриваете :-) Вы просили про таймеры, я ответил. Winforms в массиве не можно, остальные можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:29 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79Алексей Кпропущено... Что мешает по срабатыванию такого таймера запускать операции асинхронно? Ничего, я просто ответил на вопрос про массив таймеров. Если он один - вопросов к нему нет. Если их 100,200,300 штук, будут проблемы, даже если операции обработки запускать асинхронно.В WPF проблем не будет, при высокой скорости запуска асинхронной операции. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:40 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Алексей КArm79пропущено... Ничего, я просто ответил на вопрос про массив таймеров. Если он один - вопросов к нему нет. Если их 100,200,300 штук, будут проблемы, даже если операции обработки запускать асинхронно.В WPF проблем не будет, при высокой скорости запуска асинхронной операции. Это который DispatcherTimer? возможно, я WPF не знаю. Но речь шла о System.Windows.Timer, а не Syste.Windows.Threading.Timer ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:44 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79Алексей Кпропущено... В WPF проблем не будет, при высокой скорости запуска асинхронной операции. Это который DispatcherTimer?Да. Arm79Но речь шла о System.Windows.Timer, а не Syste.Windows.Threading.TimerОк. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:47 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Алексей К, Кстати, Алексей, а вы не считаете, что костыль для UI-таймера, который запускает асинхронную обработку, сложнее, чем запустить отдельный поток обработки либо использовать нормальный таймер? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:48 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79, управление ui таймерами идет через процедуру окна, имхо тут узкое место ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:54 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79Алексей К, Кстати, Алексей, а вы не считаете, что костыль для UI-таймера, который запускает асинхронную обработку, сложнее, чем запустить отдельный поток обработки либо использовать нормальный таймер?Моё мнение: 1. Тип таймера выбирается в зависимости от потребностей. 1.1 Нужна синхронизация с UI при старте операции: DispatcherTimer 1.2 Не нужна: System.Threading.Timer 2. Реализация через таймер удобнее и эффективнее реализации через отдельный поток + очередь + WaitHandle.Wait. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:59 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Алексей К1.1 Нужна синхронизация с UI при старте операции: DispatcherTimer В случае асинхронных операций все равно нужна будет синхронизация доступа к UI. Да и, как правильно заметил Где-то в степи, там узкое место - окно. Я где-то здесь на форуме читал, что быстрее 60 раз в секунду форму не отрисовать из-за ограничений на количество сообщений в очереди. Таким образом, те же 60 таймеров при ежесекундном срабатывании будут давать значительную погрешность. Если относительно WPF это неправда, буду рад услышать экспертное мнение. Алексей К2. Реализация через таймер удобнее и эффективнее реализации через отдельный поток + очередь + WaitHandle.Wait. В вашем случае все равно от очереди не убежать, разве что действительно массив таймеров. Но скажу честно, мне такая версия не нравится. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 12:10 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Алексей К2. Реализация через таймер удобнее и эффективнее реализации через отдельный поток + очередь + WaitHandle.Wait. нет особой разницы ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 12:16 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79Алексей К1.1 Нужна синхронизация с UI при старте операции: DispatcherTimer В случае асинхронных операций все равно нужна будет синхронизация доступа к UI.Я про синхронизацию при старте операции, а не при её выполнении/окончании. Arm79Да и, как правильно заметил Где-то в степи, там узкое место - окно.В WPF создаётся один API-таймер для ближайшего таймера, привязанного к данному диспетчеру. См метод http://www.dotnetframework.org/default.aspx/DotNET/DotNET/8@0/untmp/WIN_WINDOWS/lh_tools_devdiv_wpf/Windows/wcp/Base/System/Windows/Threading/Dispatcher@cs/2/Dispatcher@cs]UpdateWin32TimerFromDispatcherThread . Поэтому количество таймеров погоды не делает. Arm79Я где-то здесь на форуме читал, что быстрее 60 раз в секунду форму не отрисовать из-за ограничений на количество сообщений в очереди. Таким образом, те же 60 таймеров при ежесекундном срабатывании будут давать значительную погрешность. Если относительно WPF это неправда, буду рад услышать экспертное мнение.Сколько бывает событий MouseMove в секунду? И ничего... Arm79Алексей К2. Реализация через таймер удобнее и эффективнее реализации через отдельный поток + очередь + WaitHandle.Wait. В вашем случае все равно от очереди не убежать, разве что действительно массив таймеров. Но скажу честно, мне такая версия не нравится.Я не настаиваю. Моё мнение ничем не лучше и не хуже остальных мнений. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 12:22 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
ИзопропилАлексей К2. Реализация через таймер удобнее и эффективнее реализации через отдельный поток + очередь + WaitHandle.Wait. нет особой разницыНа нет и суда нет. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 12:23 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79В вашем случае все равно от очереди не убежать.Предпочитаю использовать готовую очередь из ThreadPool или Dispatcher, в зависимости от используемого таймера, вместо того, чтобы писать очередь самому. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 12:25 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Алексей КСколько бывает событий MouseMove в секунду? И ничего... А сколько? И разве вы не замечали, что при некоторой загрузке формы курсор двигается рвано? Алексей КВ WPF создаётся один API-таймер для ближайшего таймера, привязанного к данному диспетчеру. См метод http://www.dotnetframework.org/default.aspx/DotNET/DotNET/8@0/untmp/WIN_WINDOWS/lh_tools_devdiv_wpf/Windows/wcp/Base/System/Windows/Threading/Dispatcher@cs/2/Dispatcher@cs]UpdateWin32TimerFromDispatcherThread . Поэтому количество таймеров погоды не делает. Простите, но это разве не та же фигня, только вид сбоку? Какая разница, 100 таймеров с обработчиком раз в секунду, или один таймер срабатывающий 100 раз в секунду? И то, и другое - слишком высокая нагрузка для UI ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 12:26 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79Алексей КСколько бывает событий MouseMove в секунду? И ничего... А сколько? И разве вы не замечали, что при некоторой загрузке формы курсор двигается рвано?В нормально написанных приложениях - нет. :-) Arm79Алексей КВ WPF создаётся один API-таймер для ближайшего таймера, привязанного к данному диспетчеру. См метод http://www.dotnetframework.org/default.aspx/DotNET/DotNET/8@0/untmp/WIN_WINDOWS/lh_tools_devdiv_wpf/Windows/wcp/Base/System/Windows/Threading/Dispatcher@cs/2/Dispatcher@cs]UpdateWin32TimerFromDispatcherThread . Поэтому количество таймеров погоды не делает. Простите, но это разве не та же фигня, только вид сбоку? Какая разница, 100 таймеров с обработчиком раз в секунду, или один таймер срабатывающий 100 раз в секунду? И то, и другое - слишком высокая нагрузка для UIЗначит нужно отказываться от синхронизации с UI, если "нагрузка" на UI-поток окажется недопустимой. Я же не утверждаю, что DispatcherTimer - это единственный способ. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 12:32 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Не нравится таймер, можно вызвать ThreadPool.RegisterWaitForSingleObject самостоятельно. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 12:40 |
|
|
start [/forum/topic.php?fid=20&msg=38760485&tid=1402396]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 322ms |
total: | 467ms |
0 / 0 |