C # -Пару вопросов, связанных с потоками и простой - PullRequest
3 голосов
/ 20 июня 2011

Я пытаюсь выучить или собрать кусочки, которые я собирал, поэтому у меня есть пара вопросов:

  1. У меня есть поток, который спит в течение 5 часов после того, как он выполняет свои операции, теперь, когда этот поток спит, приложение переходит в состояние ожидания? Это автоматически дает то есть или мне нужно вызвать thread.Yield ()?

  2. Если у вас есть приложение wpf, которое ожидает ввода пользователя, оно тоже переходит в состояние ожидания, пока ожидает? Предположим, что приложению, возможно, придется ждать целый день, прежде чем ему что-то скажут? Что он делает во время ожидания, продолжает ли он потреблять ресурсы или просто автоматически переходит в состояние ожидания, где он ждет?

  3. Теперь перейдем к вопросу 2, если wpf является самостоятельным хостом для службы wcf, что делает wpf после того, как он начал хостинг, входит ли он в состояние ожидания? Таким образом, из вопроса 2 кнопка будет использоваться для сброса службы, что будет делать приложение wpf (прежде чем вы нажмете кнопку, вам не нужно повторять ответ для 2, если он одинаковый)?

Спасибо всем, Постскриптум Извините, если вопрос почему кажется реальным экзаменом, как: -S они не являются. Только что закончили экзамены и это все что я вижу: -S

1 Ответ

4 голосов
/ 20 июня 2011
  1. Если вы позвоните Thread.Sleep(), поток не будет использовать ресурсы ЦП во время сна. Поток перейдет в состояние ожидания, приложение может состоять из нескольких потоков.

  2. Операционная система держит его "спящим", пока не будет готово сообщение для него. Это не влияет на процессор во время работы приложения пользовательского интерфейса (если вы не используете таймеры в потоке пользовательского интерфейса или что-то в этом роде), однако, конечно, оно будет продолжать использовать память.

  3. Служба размещена из другого потока. Этот поток не будет использовать ресурсы ЦП, пока для него не придет сообщение. Этот поток не виден вам из C #, но если вы откроете диспетчер задач (Ctrl-Alt-Del) во время работы приложения, вы сможете увидеть количество потоков, запущенных для вашего приложения (возможно, вам придется добавить к нему столбцы). из панели меню диспетчера задач). Другой интересный столбец - «Время ЦП», в котором рассказывается о влиянии вашего приложения на ЦП.

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