Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# .NET

Войти
Регистрация
Восстановить пароль
 
 
VladimirZ29
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 38
#1

Аналог Thread.Sleep или Task.Delay - C#/.NET 4.x

17.09.2015, 18:11. Просмотров 1359. Ответов 16
Метки нет (Все метки)

Есть ли какой-нибудь аналог функциям Thread.Sleep или Task.Delay ? Мне необходимо сделать задержку без блокирования главного потока. Thread.Sleep вызывает полную блокировку главного потока на время, а Task.Delay, который мне отлично подходит, доступен только в 4.5 фреймворке, а использовать можно только средства .NET Framework 4.0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2015, 18:11
Я подобрал для вас темы с готовыми решениями и ответами на вопрос .NET 4.x Аналог Thread.Sleep или Task.Delay (C#):

Аналог Thread.Sleep - C#
когда вызываешь функцию Вызываю слип в потоке Thread.Sleep(300000) ТО программа начинает криво работать в чем дело ?

Task.Delay отказывает в работе - C#
public static async void randr_sleep(TextEdit e, decimal min, decimal max, bool a) { if (!a) return; ...

Как запустить Task в Thread - C#
Есть метод который должен работать в потоке и вне потока. var regionId = comboItems.Value; Thread myNewThread = new Thread(() =>...

Прервать ожидание Thread.Sleep - C#
Можно ли прервать ожидание Thread.Sleep? У меня сейчас в отдельном потоке выполняется некий код, при нажатии кнопки стоп меняется...

GetPixel в связке Thread.Sleep - C#
Здравствуйте. Считываю цвет необходимого мне пикселя из игры. Код считывания собственно стандартный и рабочий: static extern...

ThreadPool или Thread - C#
Делаю сервер, к которому может подключаться много клиентов, каждого клиента выделяю в отдельный поток, что для этого лучше использовать:...

16
kenny69
burning1ife
1370 / 1197 / 171
Регистрация: 21.09.2008
Сообщений: 3,356
Записей в блоге: 9
17.09.2015, 19:07 #2
Для 4,0 https://www.nuget.org/packages/Microsoft.Bcl.Async/
1
VladimirZ29
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 38
17.09.2015, 19:20  [ТС] #3
Скачал это расширение. Пишу TaskEx.Delay(время в мс). Что-то оно моментально срабатывает. В чём дело?
0
kenny69
burning1ife
1370 / 1197 / 171
Регистрация: 21.09.2008
Сообщений: 3,356
Записей в блоге: 9
17.09.2015, 19:23 #4
TaskEx.Delay(100).Wait();
0
VladimirZ29
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 38
17.09.2015, 19:28  [ТС] #5
Ну это уже ближе к делу, только вот ведь нужно ещё в метод добавить async, а после установки этой библиотеки это ключевое слово так и не появилось... Как быть?
0
kenny69
burning1ife
1370 / 1197 / 171
Регистрация: 21.09.2008
Сообщений: 3,356
Записей в блоге: 9
17.09.2015, 19:32 #6
Все ок, я проверил на 4,0
C#
1
2
3
4
5
private async void Button_Click(object sender, RoutedEventArgs e)
        {
            await TaskEx.Delay(5000);
            MessageBox.Show("Lala");
        }
0
VladimirZ29
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 38
17.09.2015, 19:35  [ТС] #7
Вот я установил библиотеку и добавил async к button1_Click(), но это к. слово не определяется. (вложение)
0
Миниатюры
Аналог Thread.Sleep или Task.Delay  
kenny69
burning1ife
1370 / 1197 / 171
Регистрация: 21.09.2008
Сообщений: 3,356
Записей в блоге: 9
17.09.2015, 19:41 #8
Странно, я сделал пустой проект в VS2013 Net 4.0 и все определяется.
0
Вложения
Тип файла: rar WindowsFormsApplication1.rar (1.86 Мб, 4 просмотров)
VladimirZ29
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 38
17.09.2015, 19:46  [ТС] #9
Сейчас проверил: в 2012, 2013 и 2015 студиях всё успешно, а вот 2010 отказывается видеть async. Фишка в том, что мне нужно скомпилировать именно в ней проект, т.к. Win XP не поддерживает проги, написанные в VS 2012 и выше
0
kenny69
burning1ife
1370 / 1197 / 171
Регистрация: 21.09.2008
Сообщений: 3,356
Записей в блоге: 9
17.09.2015, 20:12 #10
The Visual Studio Async CTP (Version 3) extends Visual Studio 2010, providing a new, streamlined syntax for asynchronous development.
http://www.microsoft.com/en-us/download/details.aspx?id=9983

Добавлено через 2 минуты
Цитата Сообщение от VladimirZ29 Посмотреть сообщение
т.к. Win XP не поддерживает проги, написанные в VS 2012 и выше
Мне кажется все дело только во Framework, чтобы был не выше 4,0, вне зависимости от того где написано.
При создании проекта можно указать 4,0 (по умолчанию 4,5)
0
VladimirZ29
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 38
17.09.2015, 21:03  [ТС] #11
4.0 и стоит

Добавлено через 43 минуты
Ну в общем с Async проблему решил, но вот возникла другая: при запуске программы на Win XP (виртуалка) вылетает ошибка "Невозможно загрузить файл или сборку System.Core Version=2.0.5.0 .... Данное имя сборки или база кода недействительны. Исключение 0x80131047". Весь инэт перерыл, не нашел решения. Подскажите пожалуйста
0
Storm23
Эксперт .NETАвтор FAQ
5724 / 3459 / 1054
Регистрация: 11.01.2015
Сообщений: 4,581
Записей в блоге: 31
17.09.2015, 21:09 #12
VladimirZ29, столько мучений лишь бы поток не создавать?
0
VladimirZ29
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 38
17.09.2015, 21:19  [ТС] #13
Создам поток - начнутся исключения типа "Использование элемента, созданного не в этом потоке". Да и ещё есть одно НО: нет возможности переписывать проект
0
VladimirZ29
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 38
17.09.2015, 21:26  [ТС] #14
Вот снимок экрана
0
Миниатюры
Аналог Thread.Sleep или Task.Delay  
insite2012
Модератор
Эксперт .NET
4771 / 3730 / 902
Регистрация: 12.10.2013
Сообщений: 10,939
Записей в блоге: 2
17.09.2015, 21:42 #15
Цитата Сообщение от VladimirZ29 Посмотреть сообщение
начнутся исключения типа "Использование элемента, созданного не в этом потоке"
А применить маршалинг в поток UI религия не позволяет? Там всего несколько слов добавить.
0
17.09.2015, 21:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2015, 21:42
Привет! Вот еще темы с ответами:

Компонент-таблица или какой-нибудь аналог. - C#
У меня есть форма, на которой необходимо предоставить таблицу для заполнения. Прямо на форме. Подключение к БД не нужно, да и сама БД не...

Аналог php функций Var_Dump или Print_r в С# - C#
Добрый вечер. Есть ли в С# готовые функции для вывода всего массива в виде: У PHP есть подобные функции: var_dump и print_r,...

Упрощенный аналог ngrok - Трех или четырехзвенная архитектура? - C#
тааак... короче, есть задумка создать упрощенный аналог ngrok. Для своих нужд) есть комп №1, есть комп №2, есть внешний сервер со...

Подскажите плз аналог php функции print_r, или как преобразовать массив в string? - C#
Может кто сталкивался...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru