Anonymous
правильно я понимаю, что ты считаешь, что в цикле токен проверять лучше чем делать token.Register?
это про другое вопрос. даже если ты отрегируешь через колбек, который зарегестрируешь, тебе все равно нужно как-то нарезать Receive на кванты времени, иначе он просто навсегда повиснет и заблокирует поток. и все равно нужен будет флаг, который позволит не-вызвать receive в очередной раз.
Vladimir
Receive он не синхронный, он создает TaskCompletionSource и кладет его в словарь
Anonymous
он - да. а твой вызов же блокирует поток. ну то есть, что будет, когда ты уже в Receive и после этого срабатывает колбек. как ты выйдешь из receive, если у него нет никакого механизма сигнализации?
Anonymous
единственное, что тебе может помочь (если нет механизма общения и сигналов) - это кванты времени, по таймауту.
Anonymous
чтобы регулярно заново входить в итерацию цикла и делать нужные проверки, мол, "все еще нужно продолжать? ок, работаем еще Н секунд".
Vladimir
ресив возвращает TaskCompletionSource, если с сервера придет сообщение то будет резалт, но я могу сделать ему Cancel и тогда слушатель как раз и отвалится
Anonymous
ресив возвращает TaskCompletionSource, если с сервера придет сообщение то будет резалт, но я могу сделать ему Cancel и тогда слушатель как раз и отвалится
ну в какой-то момент ты же вызовешь метод Receive, который пойдет сокет операционной системы слушать. это блокирующий вызов. туда сигнал кансеяции дойдет?
Vladimir
неа, это и не требуется
Romɑn
https://twitter.com/Cody_S_Johnson/status/1323227775034155008?s=19 Наконец-то, кто-то это сделал. @VagifAbilov
Ilya
Ай в пизду спорить со свидетелями решарпера в пронете
А зачем спорить? Решарпер действительно очень мало помогает в фшарпе. Вот с новым обновлением получше станет, вроде бы.
Anonymous
неа, это и не требуется
а как ты тогда разрулишь кейс, что сейчас слушаешься сокет ОС, блокирующий, и приходит отмена. окей, ты закенсеишь таску, но сокет слушать останется?
Vladimir
да, потому что сокет не только для этого вызова используется) он висит все время и переиспользуется
Vladimir
там же не реквест - респонс, а постоянное соединение, сервер время от времени присылает какие-то месседжи
Anonymous
да, потому что сокет не только для этого вызова используется) он висит все время и переиспользуется
это физический сокет переиспользуется. а поверхнего условный хендлер выделяется под соединение же.
Vladimir
там же не реквест - респонс, а постоянное соединение, сервер время от времени присылает какие-то месседжи
вот соединение у меня и переиспользуется) сто консьюмеров юзает одно и то же соединение с брокером. Юзер же не хочет консьюмера закрыть, а хочет отменить ожидание следующего сообщения. Для закрытия консьюмера отдельный метод
Vladimir
А не пойдут тут ресурсы течь? На каждый ресив создается таск который бесконечно ждет
Anonymous
А не пойдут тут ресурсы течь? На каждый ресив создается таск который бесконечно ждет
не исключено, но это можно поправить по крайней мере вот так. https://stackoverflow.com/a/18672893/7493840. а вообще -потекут в том случае ресурсы или нет, я не знаю.
Anonymous
если выиграла вторая таска
Крылатый
Там это, пенсионеры из AC/DC выпустили новый такой же альбом.
Vladimir
не исключено, но это можно поправить по крайней мере вот так. https://stackoverflow.com/a/18672893/7493840. а вообще -потекут в том случае ресурсы или нет, я не знаю.
да, этого чувака я уже в другом ответе видел) и там он говорил что чтобы ресурсы не текли надо еще регистрации диспоузить
Vladimir
поэтому я насчет них и сомневаюсь)
Vladimir
https://stackoverflow.com/a/39902447/1780648
Anonymous
а не легче самому токен прибить? после того, как получил байты?
Vladimir
легче чем что?)
Anonymous
легче чем что?)
чем регистрировать кобек.
Anonymous
Task.Delay(Timeout.Infinite, cancellationToken)
Anonymous
потом cancellationToken.Cancel() если данные пришли
Anonymous
и все
Anonymous
никаких колебеков
Vladimir
но перф мне кажется будет страдать) на каждый ресив будет эксепшн анхэндлд))
Vladimir
мерять можно, но эксепшны будут по счетчику валиться на каждый кансел)
Anonymous
но перф мне кажется будет страдать) на каждый ресив будет эксепшн анхэндлд))
а почему на каждый? ты ж кенселишь четко дилей. в остаьлных случаях какой иксепшин, откуда? у тебя WhenAny будет в большинстве сллучаев же данные отдавать и весело продолжать дальше. или я не прав?
Anonymous
если победил дилэй, то да, ты по-идее должен дальше вышвырнуть, что операция закенселилась и тогда искепшин полетит вверх по стэку. но если нет - то ты просто сам руками вызовешь Cancel(), но он закончится на уровне дилея, который оптимизирован же для этого.
Vladimir
А, согласен) Чета думал что таск делей внутри будет эксепшны ловить, наверное нет
Anonymous
А, согласен) Чета думал что таск делей внутри будет эксепшны ловить, наверное нет
не должен, это было бы очень странно со стороны разрабов
Vladimir
или наоборот кидать
Anonymous
проверь просто, спорить дольше чем узнать )
Vladimir
хаха, там внутри юзается регистрация)
Anonymous
Vladimir
внутри делея такого) InternalRegisterWithoutEC правда
Anonymous
внутри делея такого) InternalRegisterWithoutEC правда
так вот наверно оно какое-то более оптимальное
Vladimir
нет) просто передается useExecutionContext = false :) но это и так можно руками передать)
Anonymous
нет) просто передается useExecutionContext = false :) но это и так можно руками передать)
Ну тогда особой разницы нет, разве что когда поменьше.
Ayrat
Today's mood: Unable to copy file "C:\Users\ahudaygulov.EUROPE\repos\AD-MSODS-Core\out\debug\Packages\DSManagement-xddpkg\WinFabricA pplications\ReplicaMonitorApp\ReplicaMonitorPackage\ReplicaMonitor.Code\Microsoft.Online.DirectoryServices.DirectoryStorePartitionTa ble.dll" to "C:\Users\ahudaygulov.EUROPE\repos\AD-MSODS-Core\out\debug\DeploymentArtifacts\DSManagement\DSManagement-xddpkg\WinFabri cApplications\ReplicaMonitorApp\ReplicaMonitorPackage\ReplicaMonitor.Code\Microsoft.Online.DirectoryServices.DirectoryStorePartition Table.dll". The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
Ayrat
Оказывается надо было репу в корень диска класть -_-
Ayrat
СУКА БЛЯТЬ
Ayrat
прикинь, вот в 2020 бы зависеть от месторасположения репы на харде чтобы сбилдить
Ayrat
чот подгорает.
Maksym
Там таже фигня
Nikolay
D-MSODS -> D-MSDOS
Ayrat
дос бы не сбилдился с такими путями инфа сотка!
Ayrat
в винде починили на 248 символов, потому что 248 хватит всем!
Nikolay
Пишешь там под дос
Ayrat
а что за софтина у вас не может в 260 символов?
кастомный мсбилд, который называется БАРАБАННАЯ ДРОБЬ vsmsbuild
Ayrat
Да я хз, тут проект на 6гигов сорцов, 1300 проектов. и вот он час собирался (в кастомном мсбилде параллелизацию не подвезли. всё строго по одному билдится) и выдал в конце ошибку блять
Ayrat
ну, пойду вола поебу ещё 2 часа. 1 час буду клонить, ещё час билдить
Ayrat
Кастомный мсбилд????
кастомный мсбилд.
Maksym
А в чем его особенность ?
Maksym
NIH, я думаю.
Загуглил, что то ничего не находит
Ayrat
CoreXT оно называется
Ayrat
это типа интернал билд система
Ayrat
vsmsbuild её вызов
Anonymous
vsmsbuild её вызов
А vs как расшифровывается? very special?
Ayrat
In 2000 I started a build environment project inside Microsoft called CoreXT. I managed it for a while until a large community had formed around it inside Microsoft. I left in 2004, but CoreXT continued to be a vibrant and active project, and, from what I hear, is very much alive and evolving almost 15 years later. CoreXT was a fork of the Windows build environment, born from the desire of hundreds of non-Windows groups to break free from depending on the giant heavy hand of a single repo and infrastructure. Those groups included such massive codebases as Microsoft SQL Server and the entire MSN division with 54 products in my time. People continue working on CoreXT and putting CoreXT on their resumes.