Что действительно опрашивает (), делают с тайм-аутом 0?

Экран мерцает, потому что форма сначала перерисовывает фон, а затем позволяет рисовать на нем.

Вы можете приостановить это поведение, переопределив WndProc:

private const int WM_ERASEBKGND = 20;        
protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_ERASEBKGND)
    {
        m.Result = IntPtr.Zero;
    }
    else
    {
        base.WndProc(ref m);
    }
}
10
задан Willem Van Onsem 3 June 2015 в 11:34
поделиться

3 ответа

Это сразу возвратится:

Если тайм-аут больше, чем нуль, он указывает максимальный интервал (в миллисекундах) для ожидания любого дескриптора файла для становления готовым. Если тайм-аут является нулем, то poll() возвратится без блокирования. Если значение тайм-аута -1, poll блоки неограниченно долго.

, с Mac OS X 10.5;

Максимальный интервал для ожидания опроса для завершения, в миллисекундах. Если это значение 0, poll() сразу возвратится. Если это значение INFTIM (-1), poll() заблокируется неограниченно долго, пока условие не найдено.

, с OpenBSD 3.8

8
ответ дан 4 December 2019 в 01:03
поделиться

Поскольку я вижу, что это, ожидая тайм-аута означает "иметь" тайм-аут. Таким образом, я ожидал бы, что опрос () на самом деле проверяет дескрипторы файлов и затем ожидает, если никто не готов к тайм-ауту 0 миллисекунд (никакие не ожидают вообще). Но случай - то, что это будет просто сигнализировать, доступен ли fd.

Я также проверил исходный код Linux и к моему знанию, это - способ, которым это работает: сначала вычисляет "будущую" точку ожидания, затем проверяет дескрипторы файлов, затем если ни одно доступное, ожидает в течение требуемого времени тайм-аута.

С уважением,

3
ответ дан 4 December 2019 в 01:03
поделиться

Из страниц справочника Ubuntu:

Аргумент тайм-аута указывает верхний предел времени, в течение которого опрос () заблокируется в миллисекундах. Определение отрицательной величины в тайм-ауте означает бесконечный тайм-аут.

Поскольку нет никакого особого случая для 0, я предположил бы, что опрос () заблокируется для 0 миллисекунд.

0
ответ дан 4 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: