Есть ли альтернатива Application.DoEvents () для веб-службы - PullRequest
1 голос
/ 23 января 2009

Есть ли альтернативный метод System.Windows.Forms.Application.DoEvents () для очистки очереди событий, которая не использует пространство имен System.Windows.Forms? Если нет, то можно ли использовать вышеуказанный метод / пространство имен в веб-сервисе.

Ответы [ 2 ]

6 голосов
/ 23 января 2009

Application.DoEvents используется для перерисовки элементов формы во время процессов. которые препятствуют возникновению событий рисования формы, поэтому я не могу быть использован в веб-сервисе. В веб-сервисе у вас нет пользовательского интерфейса, окон и цикла сообщений так что DoEvents ничего не будет делать.

Как вы думаете, зачем вам нужно использовать Application.DoEvents в веб-сервисе?

Скорее всего, вы ищете многопоточность. Вы должны использовать потоки, если вам нужно делать несколько вещей параллельно.

РЕДАКТИРОВАТЬ см. Сообщение ctackes для получения дополнительной информации

5 голосов
/ 23 января 2009

Как отмечает Натан, DoEvents действительно просто запускает насос сообщений Windows, в результате чего верхнее сообщение в очереди переводится и отправляется. В веб-сервисе маловероятно, что он собирается что-либо делать (если вы не используете сообщения Windows для IPC или что-то дурацкое).

Если у вас есть проблема с потоком, крадущим слишком много кванта планировщика, вы можете вызвать Thread.Sleep (0), который заставляет вызывающий поток уступать до следующего такта планировщика, что может дать вашим другим голодным потокам больше возможностей для запускать, особенно если они имеют одинаковый или более низкий приоритет.

Тем не менее, если у вас есть голод, который помогает, вполне вероятно, что вам нужно сначала переработать код, чтобы предотвратить это, а не пытаться просто исправить это с помощью планировщика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...