В энциклопедии юнных сурков сказано CAUTION Always call EndInvoke after your asynchronous call completes.
и все начинает выглядить на раскаряку. Неужели для того чтобы получить fire-and-forget нужно плодить всяких "монстриков" типа
Здравствуйте, mihailik, Вы писали:
V>>А что будет если не вызывать EndInvoke? Я попробывал ничего страшного не происходит.
M>Разница только в том, что без EndInvoke у тебя может потеряться Exception. Если тебе это не важно, смело забивай. Я сам так делаю:
M>
О спасибо хоть кто — то ответил, а то создалось ощущение, что ВСЕ пишут однопоточные приложения
Меня это больше интересовало в отношении делегатов помеченых event, хило представляю нафига генерирующему событие классу головняки которые могут возникнуть в обработчиках события. Я в принципе я тоже забил на вызов EndInvoke, но насторожило это грозное CAUTION !!!!!!!
Мож в этом есть какой нибудь более глубинный смысл, дело в том что в описании этой темы уже обнаружились категорические расхождения у некоторых весьма авторитетных зарубежных толкователей идей .NET
ДРУГИ!!!!! Мож ещё какие соображения есть?
С Уважением Сергей Чикирев
С Уважением Сергей Чикирев
Re[3]: CAUTION Always call EndInvoke
От:
Аноним
Дата:
02.12.03 11:02
Оценка:
Здравствуйте, vladserge, Вы писали:
V>ДРУГИ!!!!! Мож ещё какие соображения есть?
промерял в свое время память. так вот без EndInvoke даже для OneWay что-то там остается (~4k на вызов). с потоками, действительно все нормально — они переиспользуются в вызовах.
Re[4]: CAUTION Always call EndInvoke
От:
Аноним
Дата:
02.12.03 13:18
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, vladserge, Вы писали:
V>>ДРУГИ!!!!! Мож ещё какие соображения есть?
А>промерял в свое время память. так вот без EndInvoke даже для OneWay что-то там остается (~4k на вызов).
А> с потоками, действительно все нормально — они переиспользуются в вызовах.
Во блин как глубоко капнул, щас проверю если это так то нужно бороться. У меня событие NewConnection возникает при подключении клиента к серверу и ряд обработчиков, один из которых ищет возможно неудачно подвисшую сессию, либо если таковой ненайденно, авторизует клиента это должно выполнятся ОБЯЗЯТЕЛЬНО в другом потоке и 4к на событие — это непозволительная роскошь!!!!.
С Уважением сергей Чикирев.
PS Ну тогда объявляю событийную модель в .NET кривой некрасива тады всё.
Здравствуйте, vladserge, Вы писали: V>А что будет если не вызывать EndInvoke? Я попробывал ничего страшного не происходит.
V>Поделитесь своими соображениями, пожалуйста.
Если асинхронный метод должен вернуть результат, нужено дернуть EndInvoke
... << RSDN@Home 1.1 beta 2 >>
Re[2]: CAUTION Always call EndInvoke
От:
Аноним
Дата:
02.12.03 13:38
Оценка:
Здравствуйте, rezo, Вы писали:
R>Здравствуйте, vladserge, Вы писали: V>>А что будет если не вызывать EndInvoke? Я попробывал ничего страшного не происходит.
V>>Поделитесь своими соображениями, пожалуйста.
R>Если асинхронный метод должен вернуть результат, нужено дернуть EndInvoke
Здравствуйте, <Аноним>, Вы писали:
А>А чё тада пишут CAUTION Always...... ?
Ну типа НЕ ЗАБЫВАЙТЕ вызывать EndInvoke, а то фирма ответственности не несет
На сколько я понимаю при асинхронном вызове поток берется из пула потоков.
А EndInvoke, возможно, его туда возвращает или переводит в определенное состояние.
Пул потоков ограничен в размере.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, vladserge, Вы писали:
V>>ДРУГИ!!!!! Мож ещё какие соображения есть?
А>промерял в свое время память. так вот без EndInvoke даже для OneWay что-то там остается (~4k на вызов). с потоками, действительно все нормально — они переиспользуются в вызовах.
Проверил ....... получил СОВЕРШЕННО противоположный результат наклон отъедания памяти при вызове EndInvoke был КРУЧЕ (Наблюдал в Rational Purify)