Оператор печати в 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, хочу, чтобы конечные пользователи когда-либо видели их, если Вы не можете зарезервировать информационный уровень, который отображает материал в приложении.
В Flex, используйте слабые ссылки, чтобы избежать утечек памяти .
Если обработчик событий является членом краткосрочного объекта-экземпляра, передайте обработчик как сильная ссылка на объект, который будет жить дольше, может без надобности сохранить жизнь недолговечному экземпляру.
Я использую слабые ссылки для некоторых вещей ...
Мне нравится создавать "слабые события" в .Net, чтобы наблюдаемые объекты не задерживали наблюдателей слишком долго.
Я также использовал слабые события для обнаружения утечек памяти .
В Python сборщик мусора использует подсчет ссылок, чтобы решить, когда «уничтожить» или иным образом освободить объект. Обычная циклическая ссылка может привести к тому, что объекты никогда не будут собираться мусором, потому что их счетчики ссылок, соответственно, останутся равными 1 или выше; но использование слабых ссылок позволит правильно очистить оба / все объекты, когда они выходят из области видимости.