Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задержка без подвисания 
V
    Опции темы
Alexandr507
Дата 11.2.2010, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 19.7.2009

Репутация: нет
Всего: -1



Доброго времени суток.
В функции в одном месте нужно реализовать задержку в несколько секунд, прежде чем переходить от одной строки кода к  следующей.
Вообщем то я реализовал это, следующим образом:

       
Код

     System.Threading.Thread.Sleep(3000);


как альтернативный вариант, так:

Код

...
            DateTime thsTime = DateTime.Now;
            while (thsTime.Second%10 != 0)
            {
                thsTime = DateTime.Now;
            }
...



Но когда выполнение доходит до этого места, программа  буквально подвисает, потом, правда, код реализуется дальше. Но хотелось бы избегать подвисаний.

Уважаемые программисты, подскажите как исправить данную ситуацию, вероятно существует какой-то стандартный подход к этой проблеме.
Заранее благодарен.

PM MAIL   Вверх
KelTron
Дата 11.2.2010, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 9
Всего: 38



Запускать функцию в отдельном потоке. 
Удобно использовать для этого BackgroundWorker http://wladm.narod.ru/C_Sharp/backgroundwork.html



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
Alexandr507
Дата 12.2.2010, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 19.7.2009

Репутация: нет
Всего: -1



KelTron, было у меня так, задержка в программе происходила но как говорил, с подвисанием

Код

  public void Com(Deck newDeck, Player p1, Player p2, int ind, Card Kozir, List<Label> arrLab, List<Label> arrCom) 
        {
           System.Threading.Thread.Sleep(2000);
            flag = Flag.Defence;

             ////////////  далее реализация функции
         
           Card liltle = new Card(Suit.Club ,Rank.Ace, tempInd);
            Card Hod = new Card(Suit.Club ,Rank.Ace, tempInd);
            List<Card> massivForHod = new List<Card>();
    ...


сделал так: 
Код

    public void Com(Deck newDeck, Player p1, Player p2, int ind, Card Kozir, List<Label> arrLab, List<Label> arrCom) 
        {
            mutex.WaitOne(TimeSpan.FromSeconds(2));
            flag = Flag.Defence;
            ////////////  далее реализация функции
           Card liltle = new Card(Suit.Club ,Rank.Ace, tempInd);
            Card Hod = new Card(Suit.Club ,Rank.Ace, tempInd);
            List<Card> massivForHod = new List<Card>();
...


и так
Код

    public void Com(Deck newDeck, Player p1, Player p2, int ind, Card Kozir, List<Label> arrLab, List<Label> arrCom) 
        {
        
            timer.AcquireWriterLock(10000);
            flag = Flag.Defence;
           ////////////  далее реализация функции
           Card liltle = new Card(Suit.Club ,Rank.Ace, tempInd);
            Card Hod = new Card(Suit.Club ,Rank.Ace, tempInd);
            List<Card> massivForHod = new List<Card>();
..




Теперь вовсе никакой задержки нет.. что не так?

PM MAIL   Вверх
uranpro
Дата 13.2.2010, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: 1
Всего: 1





--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.