Другое использование слабых ссылок?

Оператор печати в TSQL является недооцененным созданием, вероятно, из-за его имени. Это на самом деле отправляет сообщение на механизм ошибки/обработки сообщений, который тогда передает его вызывающему приложению. ПЕЧАТЬ является довольно немой. Можно только отправить 8 000 символов (4 000 unicode символов). Можно отправить литеральную строку, строковая переменная (varchar или символ) или строковое выражение. Если Вы используете RAISERROR, то Вы ограничены строкой всего 2 044 символов. Однако намного легче использовать его для отправки информации в вызывающее приложение, так как это называет функцию форматирования подобной старому printf в стандартной библиотеке для C. RAISERROR может также определить код ошибки, серьезность и код состояния в дополнение к текстовому сообщению, и это может также использоваться для возврата, пользовательские сообщения создали использование sp_addmessage системной хранимой процедуры. Можно также вынудить сообщения быть зарегистрированными.

Ваши процедуры обработки ошибок won’t хорошо работать для получения сообщений, несмотря на сообщения и ошибки, являющиеся настолько подобным. Техника варьируется, конечно, согласно фактическому способу, которым Вы соединяетесь с базой данных (OLBC, OLEDB и т.д.). Чтобы получить и иметь дело с сообщениями от Механизма базы данных SQL Server, когда you’re с помощью Системы. Данные. SQLClient, you’ll должен создать делегата SqlInfoMessageEventHandler, определив метод, который обрабатывает событие, для прислушиваний к событию InfoMessage на классе SqlConnection. You’ll находят, что контекстная информация сообщения, такая как серьезность и состояние передается как аргументы обратному вызову, потому что с системной точки зрения, эти сообщения точно так же, как ошибки.

Это всегда - хорошая идея иметь способ получить эти сообщения в Вашем приложении, даже если Вы просто буферизуете в файл, потому что там всегда будет использованием для них, когда Вы пытаетесь преследовать действительно неясную проблему. Однако я, can’t думают I’d, хочу, чтобы конечные пользователи когда-либо видели их, если Вы не можете зарезервировать информационный уровень, который отображает материал в приложении.

7
задан Mark Rushakoff 16 September 2009 в 16:44
поделиться

3 ответа

В Flex, используйте слабые ссылки, чтобы избежать утечек памяти .

Если обработчик событий является членом краткосрочного объекта-экземпляра, передайте обработчик как сильная ссылка на объект, который будет жить дольше, может без надобности сохранить жизнь недолговечному экземпляру.

1
ответ дан 7 December 2019 в 16:44
поделиться

Я использую слабые ссылки для некоторых вещей ...

Мне нравится создавать "слабые события" в .Net, чтобы наблюдаемые объекты не задерживали наблюдателей слишком долго.

Я также использовал слабые события для обнаружения утечек памяти .

1
ответ дан 7 December 2019 в 16:44
поделиться

В Python сборщик мусора использует подсчет ссылок, чтобы решить, когда «уничтожить» или иным образом освободить объект. Обычная циклическая ссылка может привести к тому, что объекты никогда не будут собираться мусором, потому что их счетчики ссылок, соответственно, останутся равными 1 или выше; но использование слабых ссылок позволит правильно очистить оба / все объекты, когда они выходят из области видимости.

0
ответ дан 7 December 2019 в 16:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: