@CSharpChatЭта группа больше не существует

Страница 585 из 1888
Nikolay
18.03.2017
15:43:11
В хтмл это вроде как должно работать, но не работает

Беглое гугление сказало, что можно запретить разрыв самой строки

А по поводу разрыва перед строкой ничего не нагуглил

В хтмл нашел интересную либу, которая конвертит хтмл в пдф с поддержкой нужных мне фитч, но она стоит 3800 долларов ?

Google
Nikolay
18.03.2017
15:52:10
Не отрывать от следующего похоже то, что мне нужно

Спасибо

Ilya
18.03.2017
15:52:20
именно!

Вот есть async, в нём есть await. Всё это начинает работать, а потом встречается с незавершённой задачей. И возвращает её, разблокируя thread. Если у нас UI, то он не виснет, может реагировать на ещё что-нибудь, а тот метод когда-нибудь завершится. Кто бы ещё сказал, как, если он уже returned. Это ладно, хоть как-то понятно. А если нет UI, то какой вообще смысл в Context и прочем, если продолжиться оно может только получив результат с Awaitable и использовав его в дальнейшем. Что тут вообще асинхронно и так ли уж плохо Task.Run(async () => await AsyncMethod()).Result; ?
например, ты отправляешь сообщение о начале процесса и потом кто то присылает оповещение о его завершении. в синхронной реализации ты должен отправить запрос и блокировать поток до тех пор, пока не придёт ответ. С Asyn await в этом нет необходимости, ты отправляешь запрос и создаёшь TaskCompletitionSource, и потом, когда придёт ответ ты сможешь продолжить выполнение своего кода в каком нибудь потоке из ThreadPool. То есть в момент ожидания ты не блокируешь никаких потоков

Vladimir
18.03.2017
16:09:00
пиплы? есть кто пишет под иос на шарпе?

Nicholas
18.03.2017
16:14:05
Да оно норм, только хром не может в печать нормально

Серьёзно, ишак лучше работает

Nikita
18.03.2017
16:14:15
пиплы? есть кто пишет под иос на шарпе?
на замаринформах было несколько проектов

Google
Nikita
18.03.2017
16:14:21
боль и унижение

Да оно норм, только хром не может в печать нормально
у них там вебкит патченый специальным образом

чтобы нормально мог в печать

Anatoli
18.03.2017
16:14:56
добрый вечер, Windows 10, HttpUtility или WebUtility.Urldecode возвращают знаки вопроса вместо любых нелатинских символов, как починить? На вход приходит закодированная часть урла из запроса

Nikita
18.03.2017
16:15:30
Uri.UnescapeDataString

ну и есть вариант, что у тебя в url cp1251 как-то затесалась

но это терминальный случай

Nikolay
18.03.2017
16:16:49
wkhtmltopdf
Не может он в page break

Anatoli
18.03.2017
16:17:00
Uri.UnescapeDataString не помогло

Nikolay
18.03.2017
16:17:56
Да и патчат его неохотно

Vladimir
18.03.2017
16:32:20
то есть помочь никто мне не может?

на замаринформах было несколько проектов

боль и унижение

Anatoli
18.03.2017
16:54:53
отправляю GET запрос из Postman ..../Player%D0%B93/.... затем после парсинга HttpListenerRequest.RawUrl получаю Player%D0%B93 ... затем декодирую и получаю Player?

Arseniy
18.03.2017
16:55:44
ну так запрос в оригинале дай что получается и что надо получить

‮ACx0
18.03.2017
16:56:11
например, ты отправляешь сообщение о начале процесса и потом кто то присылает оповещение о его завершении. в синхронной реализации ты должен отправить запрос и блокировать поток до тех пор, пока не придёт ответ. С Asyn await в этом нет необходимости, ты отправляешь запрос и создаёшь TaskCompletitionSource, и потом, когда придёт ответ ты сможешь продолжить выполнение своего кода в каком нибудь потоке из ThreadPool. То есть в момент ожидания ты не блокируешь никаких потоков
Стало чуть понятнее, что за ними стоит, хорошо. Но вот есть у меня какой-нибудь метод, пусть даже async (и вызвали его, например, из консольного Main, завернув в Task, чтобы не словить deadlock), внутри него вызывается другой такой же, с использованием await. Следующая же строчка использует результат работы Awaitable. Что здесь может не блокироваться? Всё же в полном блоке, пока запрос идёт, просто нечему работать до его завершения.

Кривовато написал, вот стэк вызовов, чтобы уточнить. Stack: RequestAsync(); DecodeAsync(); Main();

Anatoli
18.03.2017
17:07:51
запрос localhost:8080/players/PlayerЙ/info (Й кодируется постманом в %D0%B93) нужно сравнить PlayerЙ в нижнем регистре с именем игрока из базы данных и вернуть Json в ответ тут начинаются проблемы: как запись из базы с кириллицей так и PlayerЙ при декодировании возвращают некорректные символы и сравнение в нижнем регистре не работает так же при извлечении записи с кириллицей из БД и сериализации в Json опять же некорректные символы: вот так уже выглядит извлеченный PlayerЙ из базы в Jsonе - PlayerЙ БД Sqlite EF6 CodeFirst

productionneuh
18.03.2017
17:07:58
https://pp.userapi.com/c636323/v636323949/4f200/JNNk4xwjMAY.jpg

Google
productionneuh
18.03.2017
17:08:09
с этой стр пизжу с заказчиками

vk.com/asmjs

просто pzdc

Vyacheslav
18.03.2017
17:25:58
и завешшит программу
и как с этим бороться? поставить ожидание до тех пор пока не будет получен результат?

Ilya
18.03.2017
17:27:34
использовать синхронный вариант, в целом - да. как работают Wpf Winforms, основной поток программы боликоруется вызовом Application.Run и запускается поток диспатчера

Ilya
18.03.2017
17:32:14
но если просто надо запустить асинхронный метод синхронно, то можно обратиться к Task.Result или вызвать Task.Wait() а потом считать результат, или вызвать RunSynhronously

Arseniy
18.03.2017
17:32:55
@@anatoli_dubko я постманом не пользуюсь, потому понятия не имею, чо он там делает. далее ты говоришь про бд. и не ясно как она тут встряла. могут туда попадать кривые данные или не

Ilya
18.03.2017
17:33:02
способов много, но все они приведут к блокировке (deadlock), если задан syncronization context и не задан ConfigureAwait(false)

Anatoli
18.03.2017
17:34:24
localhost:8080/players/Player%D0%99/info

‮ACx0
18.03.2017
17:35:27
и завешшит программу
Я же написал про обёртку, не завершит.



Arseniy
18.03.2017
17:36:24
@anatoli_dubko довай дальше, что там еще у тебя неправильно кодирует

Ilya
18.03.2017
17:37:11
Я же написал про обёртку, не завершит.
я имел ввиду если не предпринять дополнительных шагов, а так, если имитировать синхронный запрос - да, поток заблокируется и профита никакого

‮ACx0
18.03.2017
17:37:50
Google
Arseniy
18.03.2017
17:40:26
при чем тут мейн? в мейне ты тока можешь синхронно ждать результат и всё

‮ACx0
18.03.2017
17:41:26
при чем тут мейн? в мейне ты тока можешь синхронно ждать результат и всё
Например при том, что всё async не пометить. (и зачем вообще?)

Arseniy
18.03.2017
17:42:28
не пометить, и что?

‮ACx0
18.03.2017
17:44:15
не пометить, и что?
То что велика ли разница, сделать всё async и вызывать через таск в main или в тех методах, где, скажем, httpclient, сделать такой вызов?

Sergey
18.03.2017
17:44:33


Это норм?

Admin
ERROR: S client not available

‮ACx0
18.03.2017
17:44:51
ConfigureAwait как раз задает, кто дожен процессить результат
То есть при false всё-таки в отдельном потоке выполняется?

Это норм?
д Это защита от спойлеров.

Arseniy
18.03.2017
17:45:31
@Hi10pH264 представь себе набор очередей. у UI-потока очередь своя. есть стандартный пул. можно своих наплодить

Sergey
18.03.2017
17:45:33
А если серьезно?(

Arseniy
18.03.2017
17:47:15
@Hi10pH264 когда ты делаешь ConfigureAwait(false) тебе плевать, куда вернется твоя задача. а когда ConfigureAwait(true) - важно (примеры - UI, wpf, asp.net mvc контроллеры, orleans)

Arseniy
18.03.2017
17:48:18
как эта

ты же можешь строить цепочки из авайтов

Google
Arseniy
18.03.2017
17:49:25
и тебе грубо говоря надо в месте старта получить только результат цепочки, а все промежуточные пусть исполняются на дефолтном пуле

‮ACx0
18.03.2017
17:49:56
Допустим, эта цепочка прыгает по потокам как попало (ещё раз: разве они вообще есть при await?), самый последний должен вернуть всё в место вызова.

Во, одно и то же написали, это хорошо.

И, далее, зачем вообще всё ограничивать контекстом, если вернётся туда же? Какой смысл в true вообще?

Arseniy
18.03.2017
17:51:41
ну ты представляешь, как работает await?

Ilya
18.03.2017
17:51:47
Весь вопрос изначальный и был - а в чём вообще профит, если это не обработчик UI / запроса ASP.NET?
если это простое консольное приложение на 100 строк кода - то никакого

Arseniy
18.03.2017
17:52:34
@Hi10pH264 раньше мы все писали .ContinueWith(yobaLambda)

Ilya
18.03.2017
17:52:56
А куда она может вернуться в принципе? Ей же, в конечном итоге, в место вызова.
он имеет ввиду немного другое, когда ты передаёшь ConfigureAwait(false) то контекст (о котором я говорил раньше) не захватывается и остаток метода выполняется в каком нибдуь потоке

Arseniy
18.03.2017
17:53:51
и yobaLambda могла быть исполнена где угодно. async/await считай что сахар (тебе не должно волновать во что енто компелица) всё что стоит под await - это yobaLambda

‮ACx0
18.03.2017
17:54:16
если это простое консольное приложение на 100 строк кода - то никакого
Не простое и не маленькое, но UI там просто не нужен.

Ilya
18.03.2017
17:55:03
Не простое и не маленькое, но UI там просто не нужен.
UI/ не IU не важно, если у тебя есть асинхронность, то с async/await будет однозначно проще

Arseniy
18.03.2017
17:55:16
@Hi10pH264 и прикинь, ты стартуешь из контроллера, где у тебя есть есть какой-то юзер, культура и тд и тп. а закончил работу там, где всего это нет. если тебе похеру на контекст, то всё ок. если нет, то тебе надо вернуться в исходный контекст

таски - это ахуеть какая сложная конструкция

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

Arseniy
18.03.2017
17:57:29
https://msdn.microsoft.com/ru-ru/library/system.threading.synchronizationcontext(v=vs.110).aspx

Ilya
18.03.2017
17:58:48
Итого, я не понимаю, куда всё это возвращается. И как вообще оно может вернуться не пойми куда, а не строго туда, откуда изначально вызвано.
у тебя есть специальный диспатчер который маршрутизирует Send/Post в поток. Тут 2 вещи разные - поток управления и поток как Thread

Arseniy
18.03.2017
18:01:06
@Hi10pH264 вот если у тебя UI, wpf, asp.net mvc контроллеры, orleans), ты вернешься откуда начал

в случае UI это будет тот же поток, но в целом, это не обязательно

главное что для лямбды внутри таски - это будет практически не отличимо

Летучая
18.03.2017
18:07:49
Господа-сеньоры

‮ACx0
18.03.2017
18:08:38
Итого, я не понимаю, куда всё это возвращается. И как вообще оно может вернуться не пойми куда, а не строго туда, откуда изначально вызвано.
Ответа, в принципе, так и нет. Если результат выполнения Task-а возвращается не в место вызова, то как это вообще может работать?

Страница 585 из 1888

Эта группа больше не существует Эта группа больше не существует