Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2015, 18:03   #1
vovaza29
Пользователь
 
Регистрация: 10.07.2015
Сообщений: 40
Восклицание Аналог Thread.Sleep или Task.Delay

Есть ли какой-нибудь аналог функциям Thread.Sleep или Task.Delay ? Мне необходимо сделать задержку без блокирования главного потока. Использовать можно только средства .NET Framework 4.0
vovaza29 вне форума Ответить с цитированием
Старый 17.09.2015, 18:07   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы что-то странное хотите, сформулируйте задачу нормально.
таймер что ли нужен?

Для async и т.п. в 4.0 кстати вроде есть библиотека от Microsoft https://www.nuget.org/packages/Microsoft.Bcl.Async
Только вряд ли оно вам поможет в вашей странной задаче.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 17.09.2015 в 18:13.
Alex11223 вне форума Ответить с цитированием
Старый 17.09.2015, 18:20   #3
vovaza29
Пользователь
 
Регистрация: 10.07.2015
Сообщений: 40
По умолчанию

Вот подробнее: в фреймворке 4.5 я использовал Task.Delay для некоторой задержки без блокирования отзывчивости главной формы. Когда начал запускать на компе с Win XP, то система стала ругаться, что она не поддерживает фреймворк 4.5, а максимум 4.0. Вот теперь приходится искать замену для Task.Delay средствами 4.0. Ключевые слова Async\Await появились только в 4.5, а как без них обойтись в 4.0 хз
vovaza29 вне форума Ответить с цитированием
Старый 17.09.2015, 19:06   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык выше ссылка на библиотеку, по идее с ней должно работать в 4.0.

TaskEx.Delay

А вообще это видимо и с таймером сделать можно если я правильно понял что вам надо.
Просто создать, запустить и остановить сразу после срабатывания.
Или даже с обычным потоком или Task (Task/TPL были и в 4.0, без некоторых фич)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 17.09.2015 в 19:08.
Alex11223 вне форума Ответить с цитированием
Старый 17.09.2015, 19:17   #5
vovaza29
Пользователь
 
Регистрация: 10.07.2015
Сообщений: 40
По умолчанию

TaskEx.Delay что-то моментально срабатывает. Я так понимаю, к нему нужно ещё что-то вроде await прикрутить. Как это сделать?
vovaza29 вне форума Ответить с цитированием
Старый 17.09.2015, 19:19   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так и сделать.

Код:
        private async void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show("1");

            await TaskEx.Delay(TimeSpan.FromSeconds(5));

            MessageBox.Show("2");
        }
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.09.2015, 19:23   #7
vovaza29
Пользователь
 
Регистрация: 10.07.2015
Сообщений: 40
По умолчанию

после добавления расширения Async\Await так и не появились. Всё другое, но только не это. В чем дело?
vovaza29 вне форума Ответить с цитированием
Старый 17.09.2015, 19:27   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Видимо как-то плохо добавили.

Я просто создал стандартный винформс проект с 4.0, добавил Microsoft.Bcl.Async через NuGet.
В using только System.Threading.Tasks
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.09.2015, 19:33   #9
vovaza29
Пользователь
 
Регистрация: 10.07.2015
Сообщений: 40
По умолчанию

Вот процесс установки (вложение)
Изображения
Тип файла: jpg Снимок.jpg (111.4 Кб, 132 просмотров)
vovaza29 вне форума Ответить с цитированием
Старый 17.09.2015, 19:48   #10
vovaza29
Пользователь
 
Регистрация: 10.07.2015
Сообщений: 40
По умолчанию

В 2012+ студиях всё прекрасно, а в 2010 не работает
vovaza29 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог функции Sleep(); NewBoy Общие вопросы C/C++ 3 15.06.2013 18:55
Аналог Sleep() Larboss Общие вопросы Delphi 6 29.10.2011 02:21
Delay - Sleep - delay. PrOveN C# (си шарп) 6 26.10.2011 04:36
Sleep(50); за 63 мс... или за 47... Teksa Общие вопросы C/C++ 8 20.07.2010 08:34
Аналог Sleep() Ants Общие вопросы Delphi 2 18.11.2008 13:11