Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / await, ConfigureAwait(true) / 18 сообщений из 18, страница 1 из 1
01.11.2014, 20:14
    #38793903
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
async Task F1()
{
    // UI thread
   await F2().ConfigureAwait(false);
   // Thread Pool Thread
   await F3().ConfigureAwait(true); // Требуется продолжение в UI thread
   // Но нет, продолжение в Thread Pool Thread
}


Кто виноват, что делать?
...
Рейтинг: 0 / 0
01.11.2014, 20:35
    #38793907
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Если требуется продолжение в UI thread, бери диспетчер и инвочься в нём. Ась?
...
Рейтинг: 0 / 0
01.11.2014, 20:41
    #38793911
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
МСУЕсли требуется продолжение в UI thread, бери диспетчер и инвочься в нём. Ась?Это и ежу понятно. Можно явно вызвать Task.ContinueWith. Можно разделить метода на два метода:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
async Task F1()
{
    // UI Thread
   await F2();
   // UI Thread
}

async Task F2()
{
    await F3().ConfigureAwait(false);
    // Thread Pool Thread
}


Но почему нет реакции на ConfigureAwait(true)? Трудно запомнить SynchronizationContext в начале метода и использовать внутри метода?
...
Рейтинг: 0 / 0
01.11.2014, 20:44
    #38793914
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
И накой вообще этот метод ConfigureAwait? Трудно было добавить два оператора: syncawait и await ?
...
Рейтинг: 0 / 0
01.11.2014, 20:44
    #38793915
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Алексей К, у чему нытьё, если мы и так оба знаем, как безгеморно решить задачу в UI потоке? Решил просто погундеть? )))
...
Рейтинг: 0 / 0
01.11.2014, 20:44
    #38793916
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Куда Хейлсберг смотрел? Сдаёт старик...
...
Рейтинг: 0 / 0
01.11.2014, 20:46
    #38793917
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
МСУАлексей К, у чему нытьё, если мы и так оба знаем, как безгеморно решить задачу в UI потоке? Решил просто погундеть? )))Я требую справедливости!

зы: Это мне надо в ASP.Net, чтобы в продолжении был HttpContext.
...
Рейтинг: 0 / 0
01.11.2014, 20:48
    #38793918
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Алексей Кзы: Это мне надо в ASP.Net, чтобы в продолжении был HttpContext.
http://stackoverflow.com/questions/13489065/best-practice-to-call-configureawait-for-all-server-side-code
...
Рейтинг: 0 / 0
01.11.2014, 20:52
    #38793922
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
МСУАлексей Кзы: Это мне надо в ASP.Net, чтобы в продолжении был HttpContext.
http://stackoverflow.com/questions/13489065/best-practice-to-call-configureawait-for-all-server-side-code Это я в курсе. Вопрос в другом. Как через ConfigureAwait вернуть контекст синхронизации? Хотя, кого я обманываю - никак. Остаётся надеяться на чудо - вдруг я не прав и способ есть.
...
Рейтинг: 0 / 0
01.11.2014, 20:53
    #38793923
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Накой тогда ConfigureAwait( true ), если он ни на что не влияет?
...
Рейтинг: 0 / 0
01.11.2014, 22:28
    #38793980
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Алексей ККак через ConfigureAwait вернуть контекст синхронизации?
А зачем? :)

Алексей КНакой тогда ConfigureAwait( true ), если он ни на что не влияет?
А зачем тебе ConfigureAwait(тру)?
...
Рейтинг: 0 / 0
01.11.2014, 22:44
    #38794004
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
МСУАлексей ККак через ConfigureAwait вернуть контекст синхронизации?
А зачем? :)Чтобы поиметь HttpContext в продолжении.

МСУАлексей КНакой тогда ConfigureAwait( true ), если он ни на что не влияет?
А зачем тебе ConfigureAwait(тру)?А зачем он сделан? Бесит.
...
Рейтинг: 0 / 0
05.11.2014, 10:42
    #38795870
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Алексей Кзы: Это мне надо в ASP.Net, чтобы в продолжении был HttpContext.
В asp.net нет UI thread, есть основной, но это не тоже самое, что UI thread в winforms или wpf.
Используй старый добрый ThreadStaticAttribute и передавай HttpContext через замыкание.
...
Рейтинг: 0 / 0
05.11.2014, 13:35
    #38796198
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
ЕвгенийВАлексей Кзы: Это мне надо в ASP.Net, чтобы в продолжении был HttpContext.
В asp.net нет UI thread, есть основной, но это не тоже самое, что UI thread в winforms или wpf.Я в курсе.
ЕвгенийВИспользуй старый добрый ThreadStaticAttribute и передавай HttpContext через замыкание.Не самое удачное решение. Но я знаю как сделать, вопрос не в этом.
...
Рейтинг: 0 / 0
05.11.2014, 14:49
    #38796380
Ilya81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Сколько пользовался await, если вызов начинался с UI-потока, то и продолжение было в нём (или HttpContext). Я даже помню особенность, что если при использоании старого кода без await'ов при начале вызова из STA по ошибке поставить Task.Wait так, что он будет в STA-потоке, то получается dead lock - оператор await здесь не обрабатывает тот момент, что STA поток начинает ждать сам себя.
...
Рейтинг: 0 / 0
05.11.2014, 15:07
    #38796408
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Ilya81Сколько пользовался await, если вызов начинался с UI-потока, то и продолжение было в нём (или HttpContext). Я даже помню особенность, что если при использоании старого кода без await'ов при начале вызова из STA по ошибке поставить Task.Wait так, что он будет в STA-потоке, то получается dead lock - оператор await здесь не обрабатывает тот момент, что STA поток начинает ждать сам себя.Обращаем внимание на ConfigureAwait(false) в первом сообщении топика.
...
Рейтинг: 0 / 0
05.11.2014, 15:34
    #38796456
Ilya81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Алексей КIlya81Сколько пользовался await, если вызов начинался с UI-потока, то и продолжение было в нём (или HttpContext). Я даже помню особенность, что если при использоании старого кода без await'ов при начале вызова из STA по ошибке поставить Task.Wait так, что он будет в STA-потоке, то получается dead lock - оператор await здесь не обрабатывает тот момент, что STA поток начинает ждать сам себя.Обращаем внимание на ConfigureAwait(false) в первом сообщении топика.
Это да, смысл этой строки здесь из сообщения мне не особенно понятен, в смысле что мешает не использовать подобных настроек.
...
Рейтинг: 0 / 0
05.11.2014, 15:41
    #38796469
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
await, ConfigureAwait(true)
Ilya81Алексей Кпропущено...
Обращаем внимание на ConfigureAwait(false) в первом сообщении топика.
Это да, смысл этой строки здесь из сообщения мне не особенно понятен, в смысле что мешает не использовать подобных настроек.С одной стороны хочется, чтобы работало быстрее, с другой - спортивный интерес.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / await, ConfigureAwait(true) / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]