Вопросы с тегами [dispose]

0

голосов
0

ответ
27

Просмотры

Если Dispose вызывается, когда Повторное выбрасывание необработанного исключения?

Предполагается У меня есть класс, как показано ниже: класс DisposableClass общественности: IDisposable) {личное таймер Timer (только для чтения; DisposableClass () {this.timer = новый таймер (ы => CB (ы), с, 1000, 1000); } Init () {попробуйте {// Выполняет инициализацию здесь, что не делаются в CTOR. } Поймать (Exception) {// журнал ошибок. бросить; } Наконец {// Правильно ли это? this.Dispose (); }} Общественного недействительными Dispose () {this.timer .Dispose (?); }} Мой вопрос, является ли, наконец, положение необходимо (или не должно быть вообще) в приведенном выше случае, для любого метода не-конструктора при метании необработанное исключение. Благодарю. EDIT: В ответ, пожалуйста, решить вопросы в зависимости от Init (), которые публично, защищены,
swdon
1

голосов
1

ответ
1.2k

Просмотры

How do I dispose of a VB6 COM object i'm using via an interop assembly from IronPython?

Я использую сторонний COM компонент с помощью сборки .NET в-взаимодействий IronPython, как показано здесь: Как я использую VB6 COM «ссылку» в IronPython? Мой опыт в этой области был велик, я очень впечатлен количеством материала, который работает плавно ... кроме одного. COM компонент третьей стороны использует DAO библиотеку Microsoft (не уверен, что версия) для работы с базой данных, созданных еще одним приложением 3 партии. Проблема заключается в том, что этот файл базы данных пересоздался во время выполнения моей программы, и я хотел бы, чтобы «де-инициализировать» этот COM-объект. В частности, работает мой код (который обращается атрибутами COM-компоненты, называют это методы, и т.д.) отлично работает в первый раз, я бег моей рутины. В следующий раз, однако, компонент третьей стороны COM выводит MessageBox говоря базу данных (MSAccess 95 .mdb файл) уже используется, и предлагает возможность повторить попытку. Нажатие кнопки Retry надежно работает, поэтому основной проблемой является то, что этот диалог идет вверх. Итак, моя теория является COM компонент утечки ручки в БД, и я не могу найти способ «очистки», чтобы позвонить. Я пробовал .Dispose (), но это не сработало. Мой последний курорт делает код, который вызывает к объекту COM отдельного процесса IronPython, который взаимодействует с моим основным процессом через станд / выход, как роль СОМ-объект обслуживает более а «дать мне всю эту информацию прямо сейчас» Прецедент вместо постоянно требуемой зависимости. Я надеюсь, чтобы избежать такого сценария, и так как я не знаком с COM (или действительно, .NET на то пошло), я могу только надеяться, что я не хватает очевидной. Dispose метод или тому подобное. Если нет чистого способа, я могу принудительно выгрузить сборку из моего процесса, аналогичной повторных FreeLibrary вызовов в машинном коде? (Я гарантирую, что мой код не будет использовать объект больше, так что не нужно беспокоиться о пропущенных рефах с моей стороны, ведущей к ошибке защиты памяти) EDIT: Я не был в состоянии решить эту проблему, так что я пошел из метода процесса и пусть окно убирать, когда мой Периодический процесс ребенка выключается.
EB.
1

голосов
1

ответ
104

Просмотры

обновление веб-сервиса с объектами, когда выходит из приложения

Im работая на SilverLight приложение, в котором пользователь может создавать, редактировать, удалять объекты. Изменения, которые они делают помещаются в очередь, которая обрабатывается каждые 4 минуты. Когда она обрабатывается, обновления отправляются в течение асинхронной вызова веб-метод, который будет сохранен в базе данных SQL, по одному за раз. После завершения первого обновления, следующие старты. Im возникают проблемы, когда пользователь вносит изменения, а затем выходит из приложения браузера до 4 минут таймера истекло. В настоящее время изменения теряются. Ive построен на том, что сделал парень работает над этим передо мной, и исследовал методы Dispose и Finalize, пытаясь запустить процесс обновления, когда завод в настоящее время закрыты, но это разве работает из-за асинхронной природы вызовов веб-служб , Я получаю ошибки говоря необходимые объекты уже утилизированы. Im ищет способ, чтобы сохранить данные в updatequeue с помощью WebMethod, когда пользователь пытается закрыть или обновить страницу. Im не ожидая очереди, чтобы быть набиты с обновлениями. Это приложение, которое, как правило, будет работать в течение нескольких часов в то время.
Josh
1

голосов
2

ответ
1.9k

Просмотры

Располагая TcpClient при наличии ссылки на NetworkStream

Скажем, у меня есть следующий код: публичный статический Client Connect (строка имя хоста, порт INT, BOOL UseSSL) {TcpClient TcpClient = новый TcpClient (имя хоста, порт); если (! UseSSL) {возвратить новый клиент (tcpClient.GetStream ()); } SslStream sslStream = новый SslStream (tcpClient.GetStream ()); sslStream.AuthenticateAsClient (имя хоста); вернуть новый клиент (sslStream); } Когда я компилирую это, анализ кода говорит мне, что я должен распоряжаться TcpClient до ссылки выходит за рамки. Проблема заключается в том, что мне нужно, чтобы в дальнейшем использовать основной экземпляр потока, и я не могу распоряжаться TcpClient здесь. Одновременно, я не хочу, чтобы сохранить ссылку на TcpClient где-то для того, чтобы избавиться позже, как мне нужно только поток. Что является правильным решением здесь? Благодарю.
eigenein
1

голосов
3

ответ
163

Просмотры

Обеспечение выполнения фонового потока побежал достаточно времени, чтобы закончить при выполнении модульного тестирования в .NET

Мой NUnit тест создает экземпляр класса под тестом. Конструктор этого класса охватывает два фона (с старым стилем резьба т = новая тема (myvoidreturner);) задачей, которые не заканчивают работу, потому что сам тест, если закончен раньше и утилизирован объект прибудет х, я думаю, продувка выполнения фонового потока , Есть ли способ, я могу установить свой класс, чтобы не получать утилизировать после испытания материала побежал, чтобы гарантировать, что фоновые задачи закончены?
Maxim V. Pavlov
1

голосов
3

ответ
2.5k

Просмотры

Есть ли SPSite.dispose () и SPWeb.dispose () всегда должен быть вызван?

Я обсуждал эту тему в течение нескольких дней. Я проверил несколько блогов и сделал некоторые испытания с SPDisposeChecker.exe, а также. Кажется, что есть различные идеи о том, когда Dispose () должен быть вызван. Например, этот блог Кристиан Glessner: http://www.ilovesharepoint.com/2010/03/sharepoint-disposing-myths.html Говорит, что нет необходимости утилизировать веб-все время с SPWeb. Однако Microsoft лучшая практика рекомендует Утилизировать любой Openweb. http://msdn.microsoft.com/en-us/library/aa973248(v=office.12).aspx На следующий блок кода (который староват и не внутри Использование блока) :: попробуйте {SPSite сайт = новый SPSite ( "HTTP: //mysite.aspx"); веб = site.OpenWeb (); site.Dispose (); сайт = NULL; } Задвижка (System.IO. FileNotFoundException х) {возвращение; } Если я быстро проверить с SPDisposeCheck он выдает ошибку: «Одноразовая типа не отчуждать» на линии, где веб = site.OpenWeb (); Но когда я положил, наконец, блок, как: наконец {если web.Dispose (); (веб! = NULL) } На SPDisposeCheck дает следующее сообщение об ошибке: «Примечания: Уничтожать не следует называть на этом объекте» Делая небольшое исследование, я обнаружил, что SPDispose имеет некоторую ошибку на нем, как объяснить этот блог http://social.msdn.microsoft.com/ Форум / это / sharepointdevelopmentlegacy / резьба / 3fe362b3-cc03-43e5-A076-bf37dd8175c9 Так я остался неудовлетворенным вид моего исследования. Я имею в виду с курсом следующего Microsoft наилучшей практикой хорошо, который рекомендует всегда Dispose (). Однако я до сих пор не полностью удовлетворен, когда и если не выбрасывать. Кроме того, «Когда выбрасывание SPSite он перебирает все SPWebs в„m_openedWebs“и вызывает метод Close на каждом» это правильное утверждение? И обратно в мой код блока является SPWeb.Dispose (на блоке, наконец) действительно нужен здесь?
Andres Morales
1

голосов
2

ответ
259

Просмотры

Утилизация StreamReader, что читать поток, который определяется из области видимости?

В способе полезности, который принимает параметр потока, я полагаться на каком-то StreamReader для анализа данных. Я не хочу, чтобы закрыть входящий поток в моем методе. Я хочу, чтобы метод вызывающего принять решение о продаже потока. Безопасно ли не утилизировать раскрытый StreamReader? Я имею в виду, будет ли она в конечном итоге будет автоматически утилизировать? Будет ли это привести к утечке памяти? Вот мой метод полезности. Его цель состоит в том, чтобы читать поток, и возвращает его содержимое в виде строки, независимо от того, как кодируются данные: открытые статические строки GetStringAutoDetectEncoding (Поток данных, из Encoding actualEncoding) {// 1. Существует ли Bye Order Mask? вар candidateEncoding = DetectEncodingWithByteOrderMask (данные); // 2а. Нет BOM, данные не будут либо UTF8 не BOM или ANSI, если (candidateEncoding == Кодировка. По умолчанию) {вар utf8NoBomEncoding = Encoding.GetEncoding ( "UTF-8", новый EncoderExceptionFallback (), новый DecoderExceptionFallback ()); вар positionBackup = data.Position; вар SR = новый StreamReader (данные, utf8NoBomEncoding); попробуйте {// 3. Попробовать как UTF8 без какого-либо BOM вара результата = sr.ReadToEnd (); // выбросит ошибку, если не UTF8 actualEncoding = utf8NoBomEncoding; // Возможно, в UTF8 не бом строке возврата результата; } Задвижка (DecoderFallbackException) {// 4. Перемотка поток и возврат к Asni data.Position = positionBackup; вар srFallback = новый StreamReader (данные, candidateEncoding); actualEncoding = candidateEncoding; вернуть srFallback.ReadToEnd (); ; }} // 2b. Существует спецификации. Используйте обнаруженное кодирование еще {вар SR = новый StreamReader (данные, candidateEncoding); actualEncoding = candidateEncoding; вернуть sr.ReadToEnd (); ; }} Затем я могу иметь некоторые методы в следующий образом: Foo пустота () {использования (вар поток = File.OpenRead (@ "C: \ некоего-файл")) {обнаружено кодирование; вар fileContent = MyUtilityClass.GetStringAutoDetectEncoding (поток, обнаружено); Console.WriteLine ( "Обнаружено кодирование: {0}", кодирование); Console.WriteLine ( "Содержание файла: {0}", fileContent); }} Используйте обнаруженное кодирование еще {вар SR = новый StreamReader (данные, candidateEncoding); actualEncoding = candidateEncoding; вернуть sr.ReadToEnd (); ; }} Затем я могу иметь некоторые методы в следующий образом: Foo пустота () {использования (вар поток = File.OpenRead (@ "C: \ некоего-файл")) {обнаружено кодирование; вар fileContent = MyUtilityClass.GetStringAutoDetectEncoding (поток, обнаружено); Console.WriteLine ( "Обнаружено кодирование: {0}", кодирование); Console.WriteLine ( "Содержание файла: {0}", fileContent); }} Используйте обнаруженное кодирование еще {вар SR = новый StreamReader (данные, candidateEncoding); actualEncoding = candidateEncoding; вернуть sr.ReadToEnd (); ; }} Затем я могу иметь некоторые методы в следующий образом: Foo пустота () {использования (вар поток = File.OpenRead (@ "C: \ некоего-файл")) {обнаружено кодирование; вар fileContent = MyUtilityClass.GetStringAutoDetectEncoding (поток, обнаружено); Console.WriteLine ( "Обнаружено кодирование: {0}", кодирование); Console.WriteLine ( "Содержание файла: {0}", fileContent); }} недействительными Foo () {использования (вар поток = File.OpenRead (@ "C: \ некоего-файл")) {Кодировка обнаружена; вар fileContent = MyUtilityClass.GetStringAutoDetectEncoding (поток, обнаружено); Console.WriteLine ( "Обнаружено кодирование: {0}", кодирование); Console.WriteLine ( "Содержание файла: {0}", fileContent); }} недействительными Foo () {использования (вар поток = File.OpenRead (@ "C: \ некоего-файл")) {Кодировка обнаружена; вар fileContent = MyUtilityClass.GetStringAutoDetectEncoding (поток, обнаружено); Console.WriteLine ( "Обнаружено кодирование: {0}", кодирование); Console.WriteLine ( "Содержание файла: {0}", fileContent); }}
Steve B
1

голосов
1

ответ
1.4k

Просмотры

Перезапуск JFrame после отчуждать

У меня есть проблема с рамкой, что я хочу, чтобы перезапустить после операции. В конкретных, ниже начала кадра: государственной статической силы startHome () {EventQueue.invokeLater (новый Runnable () {общественного недействительными запуска () {{попытаться кадр = новый HomeGUI (); frame.setVisible (истина);} поймать (Исключение е) {e.printStackTrace ();}}}); } Ниже Рама: Public HomeGUI () бросает IOException, InstantiationException, IllegalAccessException {setIconImage (. Toolkit.getDefaultToolkit () GetImage (ico_path)); setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); SetBounds (100, 100, 669, 516); // и т.д. ... Ниже мой фактический код для перезагрузки, но не работает: frame.dispose (); startHome (); Обработка останавливается перед тем, чтобы ввести в метод Run (). Я попытался установить кадр = нуль перед тем invokeLater и после Dispose (), но не работает. Спасибо вам за все
Angel
1

голосов
2

ответ
2.3k

Просмотры

Изменение кадров в Java, Netbeans

Я сделал проект в Java (Netbeans). У меня есть много кадров, и когда я хочу изменить кадр, я использую этот код: частная пустота jButton1ActionPerformed (java.awt.event.ActionEvent ЭВТ) {// TODO добавить код обработки: Dispose (); Opt p_b = новый Opt (); p_b.setVisible (истина); } Но, я не хочу видеть, когда кадр закрывается, и одна другой открывается. Я хочу, чтобы открыть все кадры, в том же окне. Понимаете ли вы меня или я не описать хорошо? Вы можете мне помочь? Или дайте мне пример?
user2933161
1

голосов
1

ответ
49

Просмотры

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

Перечень объектов А хранятся в кэше. В какой-то момент эти объекты передаются вокруг и свойство A, B используется. В больших структуры данных. А не должно быть сохранено в кэше, но в некоторой точке В, не требуется - и из-за его большой, мы хотим, чтобы это сборщик мусора. Будет ли Dispose метод на А, установите AB = NULL позволяют сборщик мусора, чтобы собрать этот объект, если ничего другого не содержит ссылки на B (т.е. мы назвали бы Dispose на А, когда мы больше не требуется B, или используя оператор может быть использован для достижения тот же самый эффект). В этом контексте Dispose используется для контроля времени жизни управляемого объекта, т.е. когда он может быть освобожден от CG.
Ricibob
1

голосов
1

ответ
516

Просмотры

Запись в память в .NET и забрать данные процесса в LabVIEW

Я использую пример Kinect Face-Tracking Основы WPF для сбора данных от объекта. Я могу получить доступ к данным в текстовом файле и т.д., но я хочу, чтобы записать данные в управляемой памяти в процессе C # и .NET есть программа LabView в забрать данные из того же места. До сих пор, это то, что у меня есть: this.facePoints3D = frame.Get3DShape (); // используя (MemoryStream поток = новый MemoryStream ()) {// // вар SW = новый StreamWriter (поток); Int N = 121; Еогеасп (Vector3DF [] вектор в facePoints3D.GetSlices (п)) {// преобразование из поплавка массива байтов, прежде чем перейти к вар памяти ByteArray = новый байт [vector.Length * this.facePoints3D.Count]; Buffer.BlockCopy (вектор, 0, ByteArray, 0, bytearray.Length); // Инициализировать неуправляемые памяти для хранения массива. INT размер = Marshal.SizeOf (ByteArray [0]) * bytearray.Length; IntPtr ПНТ = Marshal.AllocHGlobal (размер); попробуйте {// скопировать массив в неуправляемую память. Marshal.Copy (ByteArray, 0, ПНТ, bytearray.Length); // Скопировать неуправляемый массив обратно в другой управляемый массив. байт [] bytearray2 = новый байт [bytearray.Length]; Marshal.Copy (ПНТ, bytearray2, 0, bytearray.Length); //Console.WriteLine (» } Наконец {// Освободить неуправляемую память. Marshal.FreeHGlobal (ПНТ); }} До сих пор, у меня есть программа LabView, сконфигурированная правильно, так как процесс A (C #): MemoryStream Буфер -> Маршал AllocHGlobal -> Маршал Копировать -> Маршал Утилизация -> IntPtr ToInt64 Процесс B (LabVIEW): значение IntPtr -> Маршалл AllocHGlobal - > Маршал Copy -> Destination Теперь LabVIEW конец работает хорошо, но это не по всей видимости, подбирая значения из местоположения памяти. Подскажите пожалуйста? } Наконец {// Освободить неуправляемую память. Marshal.FreeHGlobal (ПНТ); }} До сих пор, у меня есть программа LabView, сконфигурированная правильно, так как процесс A (C #): MemoryStream Буфер -> Маршал AllocHGlobal -> Маршал Копировать -> Маршал Утилизация -> IntPtr ToInt64 Процесс B (LabVIEW): значение IntPtr -> Маршалл AllocHGlobal - > Маршал Copy -> Destination Теперь LabVIEW конец работает хорошо, но это не по всей видимости, подбирая значения из местоположения памяти. Подскажите пожалуйста? У меня есть программа LabView, сконфигурированный правильно, так как процесс A (C #): MemoryStream Буфер -> Маршал AllocHGlobal -> Маршал Копировать -> Маршал Утилизацию -> IntPtr ToInt64 Процесс B (LabVIEW): значение IntPtr -> Маршалл AllocHGlobal -> Маршал Копировать -> Назначение Теперь LabVIEW конец работает хорошо, но это не по всей видимости, подбирая значения из местоположения памяти. Подскажите пожалуйста? У меня есть программа LabView, сконфигурированный правильно, так как процесс A (C #): MemoryStream Буфер -> Маршал AllocHGlobal -> Маршал Копировать -> Маршал Утилизацию -> IntPtr ToInt64 Процесс B (LabVIEW): значение IntPtr -> Маршалл AllocHGlobal -> Маршал Копировать -> Назначение Теперь LabVIEW конец работает хорошо, но это не по всей видимости, подбирая значения из местоположения памяти. Подскажите пожалуйста?
Calorified
1

голосов
1

ответ
114

Просмотры

должны libgit2sharp Repository быть явно расположены?

В случае если libgit2sharp объект Repository явно расположен? Если очистка не всегда выполняется с помощью Repository.Dispose (), каковы возможные негативные последствия? Может ли не-GC'd Repository объект сохранить замки на различных .git файлов? Это лучше, чтобы обернуть Repository объекта в использовании заявления? вар localRepo = новый репозиторий ( "{путь локального репо}", новые RepositoryOptions ()); используя (localRepo) {// контроль // и т.д.}
BaltoStar
1

голосов
1

ответ
1.8k

Просмотры

Как избавиться от другого класса?

У меня есть основной класс, который реализует ApplicationLister и кучу других классов, которые ничего не реализуют, что я имею в виду это. // создать метод избавляется от моих других классов общественного недействительными одноразовые () {// вещи распоряжаться} // а затем вызовите метод основного класса общественного ничтожной Dispose () {classObj.disposable (); } Является ли моя идея ничего хорошего? а также как я знаю, что все классы / методы, которые являются одноразовыми.
Storm Asdg
1

голосов
2

ответ
398

Просмотры

Как использовать Dispose () правильно?

Например, если у меня есть экземпляр объекта, который реализует одноразовые, скажем, это BitmapFont someFont = новый BitmapFont (); Согласно LibGDX документации, я должен вызвать метод Dispose (), как только объект больше не нужен. Но что, если решили назначить новый шрифт для одной и той же переменной: someFont = новый BitmapFont (); Должно ли я первый вызов Dispose () перед таким назначением для того, чтобы предотвратить утечку памяти? Другими словами, какой вариант является правильным, это BitmapFont someFont = новый BitmapFont (); // сделать что-то someFont.dispose (); someFont = новый BitmapFont (); // сделать что-то еще someFont.dispose (); или это: BitmapFont someFont = новый BitmapFont (); // сделать что-то someFont = новый BitmapFont (); // сделать что-то еще someFont.dispose (); В настоящее время я думал, что первый из них является правильным, и seemes, что Dispose () ведет себя так же, как деструктор в C ++, за исключением того, что он не вызывается автоматически, за исключением. Итак, какая версия на самом деле правильно?
Tony
1

голосов
3

ответ
484

Просмотры

EventLoopScheduler: неожиданное поведение на Dispose ObjectDisposedException

При вызове Dispose на качестве EventLoopScheduler (то есть по крайней мере один элемент в рабочей очереди), то будет сгенерировано ObjectDisposedException. Исключение из своего рабочего потока. Я видел и читал два вопроса, которые уже существуют: RX2.0: ObjectDisposedException после diposing EventLoopScheduler, реактивная Rx 2,0 EventLoopScheduler ObjectDisposedException после отчуждать Однако, я думаю, что некоторые из ответов не совсем правильно, Цитирование Введение в Rx относительно EventLoopScheduler: EventLoopScheduler реализует IDisposable, и вызов Dispose позволит потоку прекратить. Как и при любой реализации IDisposable, это уместно, что вы явно управлять временем жизни ресурсов, которые Вы создаете. Источник: http://introtorx.com/Content/v1.0.10621.0/15_SchedulingAndThreading. HTML # EventLoopScheduler Они дают пример о том, как правильно использовать EventLoopScheduler: Наблюдаемое .Using (() => новый EventLoopScheduler (), ELS => GetPrices (ELS)) .Subscribe (...) К сожалению, этот пример не работает (в хотя бы не для меня :-). Учитывая этот кусок кода: внутренняя программа класса {частное статической силы Main (string [] арг) {вар источник = новый Subject (); вар подписка = Observable.Using (() => нового EventLoopScheduler (), планировщик => источник .ObserveOn (планировщик) .На (LongRunningAction)) .Subscribe (); source.OnNext ( "Первое действие (2 секунды)"); Thread.sleep (TimeSpan.FromSeconds (1)); subscription.Dispose (); // Планировщик еще занят! Console.ReadLine (); } частных статических аннулируются LongRunningAction (строка текста) {Thread.sleep (TimeSpan.FromSeconds (2)); Console.WriteLine (текст); }} Я ожидал бы увидеть текстовое сообщение через 2 секунды без каких-либо ошибок (даже если подписка была отчуждена после 1 секунды). EventLoopScheduler не может отменить текущую эксплуатацию, это хорошо для меня. То, что вы действительно получите, это сообщение и необработанное ObjectDisposedException. Таким образом, это ошибка или я делаю неправильно? :-) Чтобы обойти это исключение, я в настоящее время обернуть EventLoopScheduler и вызвать scheduler.Schedule (() => scheduler.Dispose ()) на wrapper.Dispose (). }} Я ожидал бы увидеть текстовое сообщение через 2 секунды без каких-либо ошибок (даже если подписка была отчуждена после 1 секунды). EventLoopScheduler не может отменить текущую эксплуатацию, это хорошо для меня. То, что вы действительно получите, это сообщение и необработанное ObjectDisposedException. Таким образом, это ошибка или я делаю неправильно? :-) Чтобы обойти это исключение, я в настоящее время обернуть EventLoopScheduler и вызвать scheduler.Schedule (() => scheduler.Dispose ()) на wrapper.Dispose (). }} Я ожидал бы увидеть текстовое сообщение через 2 секунды без каких-либо ошибок (даже если подписка была отчуждена после 1 секунды). EventLoopScheduler не может отменить текущую эксплуатацию, это хорошо для меня. То, что вы действительно получите, это сообщение и необработанное ObjectDisposedException. Таким образом, это ошибка или я делаю неправильно? :-) Чтобы обойти это исключение, я в настоящее время обернуть EventLoopScheduler и вызвать scheduler.Schedule (() => scheduler.Dispose ()) на wrapper.Dispose ().
Daniel Müller
1

голосов
2

ответ
567

Просмотры

Render partial view in MVC using action result, ObjectContext disposed

Я пытаюсь заполнить частичный вид, используя следующий по моему мнению: @ {Html.RenderAction ( «AppointmentsView», «Назначение», новый {идентификатор = Model.PatientId});} Моего результата действия заключается в следующем: государственный ActionResult AppointmentsView (интермедиат ID) {используя (контекст вара = новые WaysToWellnessDB ()) {IEnumerable назначение = context.AppointmentDiaries.Where (а => a.PatientId == ID) .ToList (); вар accountUsers = context.AccountUsers.Select (р-р => новый SelectListItem {Значение = rr.AccountUserId.ToString (), Text = rr.FirstName + "" + rr.LastName}) ToList (). ViewBag.AccountUsers = accountUsers; вар расположение = context.Locations.Select (р-р => новый SelectListItem {Значение = rr.LocationId.ToString (), Text = rr.LocationDesc}) ToList (). ViewBag. Местонахождение = местоположение; вернуться PartialView ( "/ Views / Пациент / назначение / _ViewAppointments.cshtml", назначений); }} Мой частичный вид выглядит следующим образом: @foreach (вар элемент в модели) {@ Html.DisplayFor (х => item.DateTimeScheduled) @ Html.DisplayFor (х => item.AppointmentLength) @ Html.DisplayFor (х => item.AccountUser.FirstName) @ Html.DisplayFor (х => item.AccountUser.LastName) @ Html.DisplayFor (х => item.Location.LocationDesc) @ Html.DropDownListFor (х => item.AttendedStatusId, (IEnumerable) ViewBag .AppointmentStatus, NULL, htmlAttributes: новый {@class = "форма-контроль", @id = "appointmentStatusId", OnChange = "оповещения (this.options [this.selectedIndex] .value);"})} Это падение , говоря следующее: Экземпляр ObjectContext был расположен, и больше не могут быть использованы для операций, требующих соединения. Я попытался с помощью .Inlcude в моем запросе LINQ, но это не сработало .. какие-либо мысли о том, почему это не работает?
user3284707
1

голосов
2

ответ
559

Просмотры

Libgdx - класс Image отчуждать

Я использую LibGDX создать Android игры на Eclipse. Я создал экземпляр класса Image. Я не уверен, должен ли я распоряжаться его. Я создал это так; IMG = новое изображение (новая текстура ( "img.png")); Я создал текстуру, как хорошо, но я не мог найти способ распоряжаться его. Что я должен делать?
Mustafa Süve
1

голосов
1

ответ
107

Просмотры

Как правильно распоряжаться объектами в фламбе?

В этом фламбе руководствах он говорит: «Эта функция отчуждать удаляет этот компонент из его сущности, владеющих Вы должны переопределить Dispose-функцию для того, чтобы избавиться объектам себя, чтобы предотвратить утечку памяти.» У меня есть 3 вопроса: Как я должен переопределить функцию Dispose? Как правильно использовать функцию Dispose? Есть ли способ, чтобы проверить на наличие утечек памяти в фламбе?
Robert777
1

голосов
1

ответ
221

Просмотры

dc.js: Проблемы с Dispose () и deregisterChart ()

Я создаю приложение, в котором я могу добавлять и удалять диаграммы динамически. Все работает нормально, но при удалении диаграммы. Проблема у меня происходит, когда у меня есть график линии и гистограмму, один из которых является составным, и я удалить один из них (утилизирует измерение и дерегистрировать диаграмму). На данный момент графика, что я не утилизирован перестает реагировать на фильтры из других графиков и перестает реагировать на его собственные события даже думал, что другие диаграммы фильтруются ими. Кроме того, как вы можете видеть на скрипке, линия диаграммы я извлекал от постоянного тока до сих пор реагируют на другие фильтры диаграммы. Я обнаружил, что проблема заключается в вызове deregisterChart постоянного тока, но так как мое приложение может создавать и удалять пейзажную диаграмму Мне нужен способ удаления от постоянного тока те, мне не нужно больше, не нарушая те оставили позади. Это код: resetFilter = функция () {lineData.dispose () dc.deregisterChart (LineChart); } Для (вар J = 0, J <axis.length; j ++) {вар DIMDATA = __cfArray [dataId] .dimension (функция (г) {возвращение д [ось [J] .xaxis];}); вар barGroup = getGroup (DIMDATA, ось [J] .xaxis, ось [J] .yaxis, операции, IsDate); barCharts.push (dc.barChart (композитный) .valueAccessor (accesor) .dimension (DIMDATA) .group (barGroup, xAxisTitle [J]) .transitionDuration (1000) .gap (зазор) .colors (barColors [J]) .centerBar (функция () {если (axis.length> 1) возвращают ложь, иначе возвращает истину;}) .title (функция (г) {если (операция === счетчик) {если (IsDate) обратный формат (d.key) + ":" + d.value.count, иначе возвращение d.key + ":" + d.value.count; } Еще {если (IsDate) обратный формат (d.key) + ":" + d.value.total; остальное возвращение d.key + ":" + d.value.total; }})); lineData = __cfArray [dataId] .dimension (функция (д) {вернуться D [ось [J] .xaxis];}); вар lineGroup = getGroupLine (lineData, ось [J] .xaxis, ось [J] .yaxis, правда, операции, IsDate); LineChart = dc.lineChart (lineDom) .dimension (lineData) .group (lineGroup, xAxisTitle [J] + "/" + yAxisTitle) .useRightYAxis (истинные) .colors (lineColors [J]) .title (функция (д) { если (операция === счетчик) {если (IsDate) обратный формат (d.key) + ":" + d.valueCount; остальное возвращение d.key + ":" + d.valueCount;} еще {если (IsDate) формат возврата (d.key) + ":" + d. valueTotal; остальное возвращение d.key + ":" + d.valueTotal; }}) .ValueAccessor (функция (р) {если (операция === счетчик) {возвращение p.valueCount;} еще {возвращение p.valueTotal;}}); } Вар xMine; вар дом = []; для (вар я = 0; г <axis.length; я ++) {если (dom.length === 0) {дом = __dataArray [dataId] .map (функция (д) {вернуться D [ось [I] .xaxis ]}); } Еще {дом = dom.concat (__ DataArray [dataId] .map (функция (д) {вернуться D [ось [I] .xaxis]})); }} Если (IsNaN (дом [0])) {xMine = d3.scale.ordinal () домена (dom.sort ()). } Еще {. XMine = d3.scale.ordinal () домена (dom.sort (функция (а, б) {возвращают - B;})); } composite.xUnits (dc.units.ordinal) linechart.xUnits (dc.units.ordinal) LineChart. ширина (ширина) .height (высота) .margins (рентабельность) .x (xMine) .elasticY (истина) .legend (dc.legend (). х (80) .y (10) .itemHeight (13) .gap ( 5)) ._rangeBandPadding (1) .brushOn (ложь); composite.width (ширина) .height (высота) .margins (рентабельность) .x (xMine) .rightYAxisLabel (yAxisRightTitle) .elasticY (истина) .legend (dc.legend (). х (80) .y (10). ItemHeight (13) .gap (5)) ._rangeBandPadding (1) .brushOn (ложный) .shareTitle (ложный) .mouseZoomable (истина) .yAxisPadding ('10% ') .compose (barCharts) .renderHorizontalGridLines (истина); . Composite.yAxis () tickFormat (d3.format ( 'S')); . Composite.rightYAxis () tickFormat (d3.format ( 'S')); composite.render (); linechart.render (); Это скрипка я создал с моей проблемой: https://jsfiddle.net/nofknndf/9/ Спасибо! высота (высота) .margins (рентабельность) .x (xMine) .elasticY (истина) .legend (dc.legend (). х (80) .y (10) .itemHeight (13) .gap (5)) ._rangeBandPadding (1) .brushOn (ложь); composite.width (ширина) .height (высота) .margins (рентабельность) .x (xMine) .rightYAxisLabel (yAxisRightTitle) .elasticY (истина) .legend (dc.legend (). х (80) .y (10). ItemHeight (13) .gap (5)) ._rangeBandPadding (1) .brushOn (ложный) .shareTitle (ложный) .mouseZoomable (истина) .yAxisPadding ('10% ') .compose (barCharts) .renderHorizontalGridLines (истина); . Composite.yAxis () tickFormat (d3.format ( 'S')); . Composite.rightYAxis () tickFormat (d3.format ( 'S')); composite.render (); linechart.render (); Это скрипка я создал с моей проблемой: https://jsfiddle.net/nofknndf/9/ Спасибо! высота (высота) .margins (рентабельность) .x (xMine) .elasticY (истина) .legend (dc.legend (). х (80) .y (10) .itemHeight (13) .gap (5)) ._rangeBandPadding (1) .brushOn (ложь); composite.width (ширина) .height (высота) .margins (рентабельность) .x (xMine) .rightYAxisLabel (yAxisRightTitle) .elasticY (истина) .legend (dc.legend (). х (80) .y (10). ItemHeight (13) .gap (5)) ._rangeBandPadding (1) .brushOn (ложный) .shareTitle (ложный) .mouseZoomable (истина) .yAxisPadding ('10% ') .compose (barCharts) .renderHorizontalGridLines (истина); . Composite.yAxis () tickFormat (d3.format ( 'S')); . Composite.rightYAxis () tickFormat (d3.format ( 'S')); composite.render (); linechart.render (); Это скрипка я создал с моей проблемой: https://jsfiddle.net/nofknndf/9/ Спасибо! elasticY (истина) .legend (dc.legend () х (80) .y (10) .itemHeight (13) .gap (5).) ._rangeBandPadding (1) .brushOn (ложь); composite.width (ширина) .height (высота) .margins (рентабельность) .x (xMine) .rightYAxisLabel (yAxisRightTitle) .elasticY (истина) .legend (dc.legend (). х (80) .y (10). ItemHeight (13) .gap (5)) ._rangeBandPadding (1) .brushOn (ложный) .shareTitle (ложный) .mouseZoomable (истина) .yAxisPadding ('10% ') .compose (barCharts) .renderHorizontalGridLines (истина); . Composite.yAxis () tickFormat (d3.format ( 'S')); . Composite.rightYAxis () tickFormat (d3.format ( 'S')); composite.render (); linechart.render (); Это скрипка я создал с моей проблемой: https://jsfiddle.net/nofknndf/9/ Спасибо! elasticY (истина) .legend (dc.legend () х (80) .y (10) .itemHeight (13) .gap (5).) ._rangeBandPadding (1) .brushOn (ложь); composite.width (ширина) .height (высота) .margins (рентабельность) .x (xMine) .rightYAxisLabel (yAxisRightTitle) .elasticY (истина) .legend (dc.legend (). х (80) .y (10). ItemHeight (13) .gap (5)) ._rangeBandPadding (1) .brushOn (ложный) .shareTitle (ложный) .mouseZoomable (истина) .yAxisPadding ('10% ') .compose (barCharts) .renderHorizontalGridLines (истина); . Composite.yAxis () tickFormat (d3.format ( 'S')); . Composite.rightYAxis () tickFormat (d3.format ( 'S')); composite.render (); linechart.render (); Это скрипка я создал с моей проблемой: https://jsfiddle.net/nofknndf/9/ Спасибо! _rangeBandPadding (1) .brushOn (ложь); composite.width (ширина) .height (высота) .margins (рентабельность) .x (xMine) .rightYAxisLabel (yAxisRightTitle) .elasticY (истина) .legend (dc.legend (). х (80) .y (10). ItemHeight (13) .gap (5)) ._rangeBandPadding (1) .brushOn (ложный) .shareTitle (ложный) .mouseZoomable (истина) .yAxisPadding ('10% ') .compose (barCharts) .renderHorizontalGridLines (истина); . Composite.yAxis () tickFormat (d3.format ( 'S')); . Composite.rightYAxis () tickFormat (d3.format ( 'S')); composite.render (); linechart.render (); Это скрипка я создал с моей проблемой: https://jsfiddle.net/nofknndf/9/ Спасибо! _rangeBandPadding (1) .brushOn (ложь); composite.width (ширина) .height (высота) .margins (рентабельность) .x (xMine) .rightYAxisLabel (yAxisRightTitle) .elasticY (истина) .legend (dc.legend (). х (80) .y (10). ItemHeight (13) .gap (5)) ._rangeBandPadding (1) .brushOn (ложный) .shareTitle (ложный) .mouseZoomable (истина) .yAxisPadding ('10% ') .compose (barCharts) .renderHorizontalGridLines (истина); . Composite.yAxis () tickFormat (d3.format ( 'S')); . Composite.rightYAxis () tickFormat (d3.format ( 'S')); composite.render (); linechart.render (); Это скрипка я создал с моей проблемой: https://jsfiddle.net/nofknndf/9/ Спасибо! Легенда (). х (80) .y (10) .itemHeight (13) .gap (5)) ._rangeBandPadding (1) .brushOn (ложь) .shareTitle (ложь) .mouseZoomable (истина) .yAxisPadding ('10% «) .compose (barCharts) .renderHorizontalGridLines (истина); . Composite.yAxis () tickFormat (d3.format ( 'S')); . Composite.rightYAxis () tickFormat (d3.format ( 'S')); composite.render (); linechart.render (); Это скрипка я создал с моей проблемой: https://jsfiddle.net/nofknndf/9/ Спасибо! Легенда (). х (80) .y (10) .itemHeight (13) .gap (5)) ._rangeBandPadding (1) .brushOn (ложь) .shareTitle (ложь) .mouseZoomable (истина) .yAxisPadding ('10% «) .compose (barCharts) .renderHorizontalGridLines (истина); . Composite.yAxis () tickFormat (d3.format ( 'S')); . Composite.rightYAxis () tickFormat (d3.format ( 'S')); composite.render (); linechart.render (); Это скрипка я создал с моей проблемой: https://jsfiddle.net/nofknndf/9/ Спасибо! linechart.render (); Это скрипка я создал с моей проблемой: https://jsfiddle.net/nofknndf/9/ Спасибо! linechart.render (); Это скрипка я создал с моей проблемой: https://jsfiddle.net/nofknndf/9/ Спасибо!
ruba
1

голосов
1

ответ
64

Просмотры

Могу ли я позвонить Marshall.ReleaseComObject в Finalizer?

Я нашел на нашем код базового кода, как это: если (утилизации) {....} Marshal.ReleaseComObject (ComObject) Как ComObject фактически объект .Net (? RCW, справа) можно безопасно назвать из Finalizer? Возможно ли, что это был уже выпущен?
Ignacio Soler Garcia
1

голосов
1

ответ
620

Просмотры

Правильно Open, Close и Dispose Форму с «помощью» Заявление

В моей Learning Journey, я пришел к точке, где Visual Studio Жалуется о моем пути, чтобы открыть, закрыть и утилизировать в форме (после того, как я сделал с ним). Как мне это сделать; Visual Studio говорит мне, что: то есть: "Form1 Создает Типы IDisposable". Так как я хочу сделать это правильно; Я вырыл немного дальше, и я сумел понять немного, как «с помощью» выписки работ и должны быть реализованы; что обеспечивает все утилизированы должным образом. Wich работал как шарм для моего SQL методы баз данных (Insert, Update и Delete); где SqlConnection и SqlCommand, где создание IDisposable типов. По некоторым последним исследованиям с: Попробуйте, поймать и, наконец, я должен быть в состоянии сделать то же самое, как вещь, как с: «используя» заявление; но она также будет Закройте форму даже без его использования. Кроме того, с Try, Поймайте, В заключение; Форма будет свернута даже без использования его и Visual Studio будет бросать то же сообщение «IDisposable типов». Дальнейшие слова; после того, как все «с помощью» информации, которую я нашел; Я был в состоянии значительно улучшить мое приложение (и мой стиль кодирования); Однако я не могу понять, как использовать «используя» с формой ... Я могу создать экземпляр формы, но я не могу держать форму открыт, пока я не сделал с ним или пользователь нажимает кнопку «Закрыть». Поэтому мой вопрос: Как следует надлежащим образом осуществлять это? или Возможно ли это вообще? Пример с использованием: частная пустота OpenForm1 () {// Создать новый экземпляр класса Form1, используя (вар f1 = новый Form1 ()) {// Некоторые код здесь} // Form1 Instance получает удалялись в конце цикла вышеперечисленного. } Пример моей текущей (скромная) Open & Закрыть Форму Метод: Малое Примечание: Я звоню этот метод пыльника от класса, который будет контролировать: Open & Закрыть формы данных, передаваемые через формы частной Form1 f1; общественного недействительными OpenForm1 (BOOL _open, внутр _LocX, внутр _LocY) {попробуйте {переключатель (_open) {случай верно: // Закрываем и Dispose "Form1" (если разомкнут), если (! f1 = NULL) {OpenForm1 (ложь, 0, 0); } // Re-Open Form1 с новыми данными (если она закрыта), если (f1 == NULL) {f1 = новый Form1 (_LocX, _LocY); } F1.Show (); перерыв; случай неверно: если (! f1 = NULL) {f1.Close (); f1.Dispose (); f1 = NULL; } перерыв; }} Поймать (InvalidOperationException _IOE) {MessageBox.Show (_IOE.Message); } } Заметка: Я знаю, что в качестве альтернативы может использовать / сделать IDisposable шаблон (которым я до сих пор не понимаю, как реализовать или использовать его на практике - просто теория до сих пор все мои попытки не увенчались успехом,. Принуждают меня быть перегружены и вопрос, если это будет продуманным хорошая практика). Заранее спасибо. С уважением;
123
1

голосов
1

ответ
323

Просмотры

Есть ли Dispose шаблон в Python?

Я должен создать питон-обертку для C API. Я использовал ctypes, чтобы позвонить в DLLs C из питона. Я могу создать ручку и использовать его из питона. Ищу Dispose шаблон в Python, подобный C #. Существует ли Dispose шаблон в Python?
Abhash Kumar Singh
1

голосов
1

ответ
84

Просмотры

Do I really need Basic dispose pattern for type referencing other IDisposable objects?

Рекомендации по проектированию Microsoft уже Dispose модели и сценарии, как использовать его: DO реализовать Basic Dispose План по типам, содержащих экземпляры одноразовых типов. См Узор раздел Основные Dispose для получения подробной информации о базовой модели. Позже, они показывают Basic Dispose шаблон следующим образом: DisposableResourceHolder общественного класса: IDisposable {личное SafeHandle ресурс; // дескриптор ресурса общественного DisposableResourceHolder () {this.resource = ... // выделяет ресурс} общественности недействительным Dispose () {Dispose (истина); GC.SuppressFinalize (это); } Защищенного виртуального недействительного Dispose (логическое значение, располагающий) {если (утилизация) {если (ресурс! = NULL) resource.Dispose (); }}} Мои вопросы: Почему мы должны реализовать Dispose (логическое значение), если он имеет только один вызов с параметром истинного? Это может быть легко упрощен просто без параметров Dispose () {ресурс .Dispose ();?}. Обратите внимание, мы не должны финализаций здесь потому, что объекты, которые мы ссылаемся управляются и имеют свои собственные финализаторы, так что они не будут просочились. Почему они рекомендуют называть GC.SuppressFinalize (это), а не имеющие финализации? GC все равно не стал бы называть финализации, потому что не существует! Единственный случай, когда я вижу необходимость Dispose (BOOL), когда у нас действительно есть некоторые неуправляемые ссылки, которые не реализуют IDisposable ни финализации (как показанные в этой статье). Но тогда смысл BOOL утилизации будет BOOL includingManagedResources. Так почему же он назван так в заблуждение «утилизации» к тому, что он должен делать на самом деле? Dispose ();}. Обратите внимание, мы не должны финализаций здесь потому, что объекты, которые мы ссылаемся управляются и имеют свои собственные финализаторы, так что они не будут просочились. Почему они рекомендуют называть GC.SuppressFinalize (это), а не имеющие финализации? GC все равно не стал бы называть финализации, потому что не существует! Единственный случай, когда я вижу необходимость Dispose (BOOL), когда у нас действительно есть некоторые неуправляемые ссылки, которые не реализуют IDisposable ни финализации (как показанные в этой статье). Но тогда смысл BOOL утилизации будет BOOL includingManagedResources. Так почему же он назван так в заблуждение «утилизации» к тому, что он должен делать на самом деле? Dispose ();}. Обратите внимание, мы не должны финализаций здесь потому, что объекты, которые мы ссылаемся управляются и имеют свои собственные финализаторы, так что они не будут просочились. Почему они рекомендуют называть GC.SuppressFinalize (это), а не имеющие финализации? GC все равно не стал бы называть финализации, потому что не существует! Единственный случай, когда я вижу необходимость Dispose (BOOL), когда у нас действительно есть некоторые неуправляемые ссылки, которые не реализуют IDisposable ни финализации (как показанные в этой статье). Но тогда смысл BOOL утилизации будет BOOL includingManagedResources. Так почему же он назван так в заблуждение «утилизации» к тому, что он должен делать на самом деле? SuppressFinalize (это), не имея финализации? GC все равно не стал бы называть финализации, потому что не существует! Единственный случай, когда я вижу необходимость Dispose (BOOL), когда у нас действительно есть некоторые неуправляемые ссылки, которые не реализуют IDisposable ни финализации (как показанные в этой статье). Но тогда смысл BOOL утилизации будет BOOL includingManagedResources. Так почему же он назван так в заблуждение «утилизации» к тому, что он должен делать на самом деле? SuppressFinalize (это), не имея финализации? GC все равно не стал бы называть финализации, потому что не существует! Единственный случай, когда я вижу необходимость Dispose (BOOL), когда у нас действительно есть некоторые неуправляемые ссылки, которые не реализуют IDisposable ни финализации (как показанные в этой статье). Но тогда смысл BOOL утилизации будет BOOL includingManagedResources. Так почему же он назван так в заблуждение «утилизации» к тому, что он должен делать на самом деле?
1

голосов
1

ответ
0

Просмотры

Располагая управление вызовом его собственной BeginInvoke ()

Располагая управление с помощью вызова своих собственных BeginInvoke () является хорошей идеей или плохая идея? Или я должен использовать родительский контроль или что-то подобное, чтобы выполнить эту задачу? Я использую Invoke, потому что я доступ управления образованием другого потока.
dr. evil
1

голосов
3

ответ
0

Просмотры

Выяснение больших полей из памяти в долгоживущих объектах

.NET 3.5, у меня есть несколько классов, которые хранят до 1Мб строк. Даже если мне нужен объект в течение действительно долгого времени мне не нужно хранить строку в течение длительного времени. Как я действительно могу удалить строку из памяти, не располагая родительский объект. Это хорошая практика, чтобы использовать «туЗЬптд = нуль» в данном случае? или должны обернуть его в частном классе dsposable или что-то?
dr. evil
1

голосов
4

ответ
0

Просмотры

Располагая растрового изображения через его Finalizer

У меня есть комплексная программа, в которой я должен сначала создать, а затем использовать обертки вокруг растровых изображений и отправить их через много разных классов. Проблема в конце концов решает, какие классы должны распоряжаться растровые изображения. Большая часть времени конечных классы не знают, если они действительно могут распоряжаться растровым изображение, как же растровые изображения могут быть использованы в нескольких местах. Кроме того, я не могу просто скопировать растровые изображения, потому что это своего рода ресурсоемких алгоритма и делать это будет мертв медленно. Я посмотрел на отражатель для изображения / реализации растрового изображения, и они, кажется, использовать Dispose Pattern. Так что, даже если я не называю Dispose (), то CLR будет в конечном итоге назвать его в другое время. Это слишком плохо, если я просто дайте битовые быть, как они, и пусть финализации заботиться о них?
1

голосов
2

ответ
0

Просмотры

Проблема с MEF - ExportFactory - вызвать метод Dispose

Если возможный способ вызова Dispose на объекте, который создается с ExportFactory? Фабрика находится здесь: открытый интерфейс IViewModelsControler {IChatViewModel CreatChatViewModel (); } [Export (TypeOf (IViewModelsControler))] общественный класс ViewModelsControler: IViewModelsControler {[Импорт] общественный ExportFactory ChatViewFactory {получить; задавать; } Общественного IChatViewModel CreatChatViewModel () {вернуть ChatViewFactory.CreateExport () Значение. }} Создание объекта: вар chatScreen = ViewModelControler.CreatChatViewModel (); Я хотел бы chatScreen.Dispose вызова (). ChatViewModel называют выглядеть следующим образом: [Export (TypeOf (IChatViewModel))] [PartCreationPolicy (CreationPolicy.NonShared)] общественный класс ChatViewModel: Экран, IChatViewModel {}
1

голосов
2

ответ
0

Просмотры

VB.NET 'someObj' is not disposed along all exception paths - I don't want to dispose it. Is my approach wrong?

VB.NET 2010, .NET 4 Здравствуйте, я попытался запустить анализ кода в первый раз и обнаружил, что она появляется много других на SO делает то же самое обнаружили: обилие В методе «SomeMethod ()», «объект SomeObject» не расположенных вдоль всех путей исключения. Вызов System.IDisposable.Dispose на объекте «SomeObject» прежде все ссылки на это не входит в сферу. предупреждения (CA2000). Я прочитал кучу других потоков на этом здесь на SO, большинство из которых было связано с рассматриваемым объектом, возможно, бросание исключение за пределами Ьгу блока и т.д. Но что о чем-то вроде этого? Частный SomeContainer As New Panel Private Sub SomePopulatorMethod () '..stuff ..' Для я As Integer = 0 To 9 Dim newLabel как новая метка newLabel.Text = i.ToString SomeContainer.Controls.Add (newLabel) Next».. другие вещи ..»End Sub В этом случае, я не хочу newLabel, чтобы быть утилизированы, поскольку она должна оставаться на панели. Я делаю такие вещи, как это, когда динамически создание вспомогательной формы, где я создаю кучу пар текстового поля / ярлыка для представления некоторого набора данных. Является ли этот подход в корне неверно? Если да, то как еще я должен идти об этом? Я на самом деле (вроде) хорошо с просто позволить спящую собаку, но предупреждения сделать мне грустно ... Я хотел бы сделать все правильно, если бы я только мог знать, как. Любое понимание будет оценено! Спасибо заранее, Брайан как еще я должен идти об этом? Я на самом деле (вроде) хорошо с просто позволить спящую собаку, но предупреждения сделать мне грустно ... Я хотел бы сделать все правильно, если бы я только мог знать, как. Любое понимание будет оценено! Спасибо заранее, Брайан как еще я должен идти об этом? Я на самом деле (вроде) хорошо с просто позволить спящую собаку, но предупреждения сделать мне грустно ... Я хотел бы сделать все правильно, если бы я только мог знать, как. Любое понимание будет оценено! Спасибо заранее, Брайан
Brian Mulcahy
1

голосов
1

ответ
0

Просмотры

Отпиской события в WPF Control

У меня есть пользовательский элемент управления, ползунок диапазона, который используется в одном из моих взглядов. Конструктор выглядит следующим образом: EventHandler ReCalculateWidthsHandler; общественного RangeSlider () {ReCalculateWidthsHandler = OnReCalculateWidths; DependencyPropertyDescriptor.FromProperty (ActualWidthProperty, TypeOf (RangeSlider)). AddValueChanged (это, ReCalculateWidthsHandler); } Я не знаю, когда / как я могу unscubscribe обработчик события. Там нет Dispose метода контроля. Есть ли способ, что я могу быть уведомлен о том, что управление расположено / удалено, так что я могу отписать любое подписалось событие? Это может быть более общий вопрос: Учитывая пользовательский элемент управления, который проходит контроль, как вы можете сказать, когда он расположен? Спасибо.
Flack
1

голосов
1

ответ
0

Просмотры

Entity Framework - Load Reference Keys настроив контекста объекта сущности

Я использую ASP.Net / WebForms / Entity Model / Framework 3.5 Вот простая структура формы моего проекта> BLL> DAL (использует модель сущностей) Вот фрагмент общественного класса MyDAL моего DAL в: IDisposable {частных MyEntities дб; общественный BaseDAL () {дБ = новые MyEntities (); } Польз GetUserByID (интермедиат идентификатор пользователя) {попробуйте {IQueryable objUser = NULL; objUser = от Реза в db.Users, где res.UserId == USERID выберите разрешение; вернуть objUser.FirstOrDefault (); } {Улов бросить; }} Общественного недействительными Dispose () {db.Dispose (); }} Я называю DAL» s функция от моего УСК, как этот общественный класс MyBLL {Public User GetUserByID (интермедиат USERID) {попробуйте {используя (MyDAL objMyDAL = новый MyDAL ()) {вернуться objMyDAL.GetUserByID (USERID); }} {Улов бросить; }}} Я звоню DAL через используя блок так Dispose событие MyDAL будет стрелять вскоре после того, как BLL возвращает объект пользователя. Таким образом, на данный момент ObjectContext экземпляр получает удален. Теперь в моем веб-форму, я вызываю эту функцию, как это, чтобы получить информацию о пользователях и группах деталей, которая является внешним ключом из user_group таблицы в таблице пользователя защищен недействительным Page_Load (объект отправителя, EventArgs е) {MyBLL objMyBll = новый MyBLL (); Пользователь objUser = objMyBll.GetUserByID (123); objUser.User_GroupReference.Load (); // ОШИБКА ЛИНИИ INT идентификатор_группы = objUser.User_Group.Group_Id; } Когда ода приходит на линии objUser.User_GroupReference.Load (); Я получаю это исключение Экземпляр ObjectContext были захоронены и больше не могут быть использованы для операций, требующих соединения. Как решить эту проблему? Если я не делаю db.Dispose (); в Dispose метод моего DAL, он прекрасно работает и никаких исключений не приходит. Но если я не выбрасывайте объект дб там, когда и где я должен распоряжаться его? И как получить доступ Эталонных ключей после контекста захороненного объекта? в Dispose метод моего DAL, он прекрасно работает и никаких исключений не приходит. Но если я не выбрасывайте объект дб там, когда и где я должен распоряжаться его? И как получить доступ Эталонных ключей после контекста захороненного объекта? в Dispose метод моего DAL, он прекрасно работает и никаких исключений не приходит. Но если я не выбрасывайте объект дб там, когда и где я должен распоряжаться его? И как получить доступ Эталонных ключей после контекста захороненного объекта?
Riz
1

голосов
4

ответ
0

Просмотры

Что такое правильный шаблон, чтобы закрыть OdbcConnection в asp.net-MVC веб-страницы

У меня есть сайт, и у меня есть класс доступа к данным, который имеет OdbcConnection. В конструкторе у меня есть этот код: общественный MySybaseProvider () {_conn = GetConn (); } Общественного OdbcConnection GetConn () {строка connString = "DSN = SybaseIQ; Eng = SYSERVER, ссылки = TCPIP (Host =" + _connectionInfo.Host + "; порт =" + _connectionInfo.Port + "); UID =" + _connectionInfo. Пользователь + "; PWD =" + _connectionInfo.Pwd + ";"; вернуть новый OdbcConnection (connString); } И через вне класса У меня есть следующий код: частный OdbcQuery GetQuery (строка SQL) {возвратить новый OdbcQuery (_conn, SQL); } Я пытаюсь выяснить, лучший способ, чтобы убедиться, что я закрываю соединение правильно. Должен ли я реализовать IDisposable? я должен открывать и закрывать соединение на каждом запросе? Существуют ли какие-либо другие лучшие практики здесь. EDIT: Чтобы уточнить, мой случай использования является то, что я загрузке одного веб-страницы, но это занимает около 10 запросов, чтобы получить все необходимые данные для страницы.
leora
1

голосов
1

ответ
0

Просмотры

LINQ к SQL, переопределение отчуждать

Я создаю LINQ к SQL DataContext, передавая ему уже открытое соединение. Это работает, за исключением того, что я в настоящее время утечка соединений везде, потому что хотя я распоряжаться DataContext, когда я закончу, соединение никогда не закрывается. Я понимаю, что это дизайн. То, что я хотел бы сделать, это убедиться, что мое соединение закрывается, как только мой DataContext расположен. Я попытался переопределить Dispose на DataContext, как этот: защищенный переопределение ничтожной Dispose (BOOL утилизации) {this.Connection.Close (); } Однако, это не работает ... Я получаю ObjectDisposedException. Установка точки останова показывает мне, что все уже расположено в этой точке! Единственный способ решения проблемы я нашел, чтобы скрыть Dispose метод на DataContext. Как это: общественные новые аннулируются Dispose () {this.Connection.Close (); base.Dispose (); } Однако, это имеет немного плохой код запах для меня. Что такое рекомендуемый способ продолжить здесь? Полный пример кода (DataClasses1DataContext пустая DataContext): класс Program {статической силы Main (string [] арг) {строка ConnectionString = "Сервер = локальный; начальный каталог = мастер; Integrated Security = SSPI;"; для (INT I = 0; г <100, я ++) {соединения переменного = новый SqlConnection (ConnectionString); connection.Open (); вар CTX = новый DataClasses1DataContext (соединение); ctx.ExecuteCommand ( "объявить @i Int"); ctx.Dispose (); } Console.ReadKey (); }} Общественного частичного класса DataClasses1DataContext {защищен переопределения недействительным Dispose (BOOL утилизации) {// Это будет бросаться ObjectDisposedException // this.Connection.Close (); } Общественности новые аннулируются Dispose () {// Это будет работать // this.Connection.Close (); //base.Dispose (); }}
TheNextman
1

голосов
1

ответ
353

Просмотры

Свободный Nhibernate работает с юридическими лицами после сессии расположена

У меня вопрос о работе с юридическими лицами, которые были получены из БД. В настоящее время я имею много операций, где мне нужно, чтобы получить объекты из БД, и передать их в другую службу. Упрощенный вариант такого кода являются, как это: Список; используя (вар сессия = SessionFactory.OpenSession ()) {список = Session.QueryOver.Future () ToList (). } Так что теперь я не знаю, если список объектов не расположен в течение длительного времени, будет ли он причиной Лира памяти accordint хранимых сеансов. Существуют ли NHibernate сессий в то время как существуют объекты, которые были получены во время сессии? Обновление: Найдено некоторые настройки Session.ActiveEntityMode сессии - ПОКО, не решает мою проблему?
Johnny_D
1

голосов
1

ответ
1.2k

Просмотры

Чтение данных из JPanel внутри JDialog до того близко

Я должен отобразить JPanel внутри JDialog и до сих пор я имел дело с ним, однако я не знаю, как закрыть диалоговое окно и получить данные внутри JPanel перед утилизацией его. newButton.addActionListener (новый ActionListener () {@Override общественное недействительное событие actionPerformed (ActionEvent) {JDialog диалог = новый JDialog (Main.getMainFrame (), правда); JPanel JPanel = новый JPanel ();. dialog.getContentPane () добавить ( JPanel); dialog.setMinimumSize (новое измерение (600, 800)); dialog.setVisible (истина), если (jPanel.close) {/ * прочитать некоторую полезную информацию от JPanel * / dialog.setVisible (ложь); диалог. Dispose ();}}}); до сих пор я поставить кнопку внутри JPanel, который устанавливает логическое закрытие = True и диалог считывает его и избавляется от себя. Однако это не работает: Я подозреваю, что jPanel.close () проверяется, прежде чем нажать близко внутри JPanel в то время как он должен ждать фактического значения близкого к изменениям.
dendini
1

голосов
1

ответ
6.7k

Просмотры

Java, как предотвратить виджет расположенную ошибку?

Когда я закрываю главное окно я получаю сообщение об ошибке, потому что она расположена. Я пытаюсь «отфильтровать» (используя условие), но я не могу заставить его работать. если {Display.getDefault () syncExec (новый Runnable () {@Override общественный недействительный запуск () {View.tableViewer.refresh (); setViewInfo ();}}) (Display.getDefault () IsDisposed (!).). ; } Ошибка: Исключение в потоке «Тема-3» org.eclipse.swt.SWTException: Не удалось выполнить работоспособный (org.eclipse.swt.SWTException: Втулка расположена) на org.eclipse.swt.SWT.error (SWT.java : 4361) при org.eclipse.swt.SWT.error (SWT.java:4276) в org.eclipse.swt.widgets.Synchronizer.syncExec (Synchronizer.java:196) в org.eclipse.ui.internal.UISynchronizer. syncExec (UISynchronizer.java:150) при org.eclipse.swt.widgets.Display.
Zbarcea Christian
1

голосов
2

ответ
766

Просмотры

vb.net Программа не закрывается

Так что это мой код в функции модуля. Я хотел бы, чтобы закрыть программу, где я называю Application.Exit, но он продолжает работать. Есть ли основания для этого? Dim OpenFileDialog1 Как Новый FolderBrowserDialog If OpenFileDialog1.ShowDialog () = System.Windows.Forms.DialogResult.OK Тогда pictureFolder = OpenFileDialog1.SelectedPath movingPictures (pictureFolder) «GetImagePath () Else Dim ответ As DialogResult ответ = MessageBox.Show (" Потребности программы эта папка будет продолжаться, "& vbCrLf & _ "Выберите Retry, чтобы попробовать еще раз, или Отмена, чтобы закрыть.", "Повторить или Close?", MessageBoxButtons.RetryCancel, MessageBoxIcon.Information) Если ответ = vbRetry Тогда GoTo RepickOpenfileDialog Else ' по существу ... здесь, где я хотел бы, чтобы закрыть программу ... ", но это просто не будет ... он продолжает работать, хотя код ... есть хорошая причина для этого? Application.Exit () Form1.Close () End If End If processLock = 0
Pakk
1

голосов
1

ответ
626

Просмотры

Располагая Graphics2D рисунок после того, как он обращается

Для игры, я работаю над мне нужно нарисовать прямоугольник, который становится все меньше и меньше. Я понял, как рисовать прямоугольник меньше с помощью поворотно таймера как это: таймер = новый таймер (100, новый ActionListener () {общественного недействительными actionPerformed (ActionEvent е) {Graphics2D g2d = (Graphics2D) panel.getGraphics (); если (ширина> 64) {g2d.drawRect (х, у, ширина, высота); х + = 1; у + = 1; ширина - = 1; высота - = 1;}}}); timer.start (); Проблема, которую я имею, что он не будет удалить прямоугольник, который составлялся перед таким образом она не будет выглядеть так, как это сокращение, но больше похоже на этом заполнении. Так как же я удалить ранее нарисованный прямоугольник сразу после того, меньший прямоугольник был сделан?
1

голосов
1

ответ
917

Просмотры

Как Утилизировать Старый Sprite объекты с Всеми ссылками Event Listener?

В ActionScript-3 в моем редакторе уровней у меня есть для каждого уровня нового объекта. Старые объекты уровня удаляются со сцены. Таким образом, только один объект уровня находится на стадии. Я не держу их в массив или что-то надеясь, что вывоз мусора располагает их для меня. Моя проблема, как представляется, что методы старых объектов по-прежнему ссылается на слушателях событий, которые будут срабатывать события на новый объект, а также к старому. Старые объекты не на сцене, и поэтому невидимы, но при сохранении я заметил, что старые уровни имеют состояние, вызванное редактированием более новый уровень. Сейчас: Как я могу избавиться мои объекты наверняка? Редактирование: У меня также есть некоторые слушатели событий добавили к этапу (KeyDown, MouseMove). Может быть те немногие проблемы и другие, которые только добавлены к объекту удаляются автоматически объект?
n4pgamer
1

голосов
2

ответ
724

Просмотры

Как избавиться от JFileChooser

Каждый раз при нажатии кнопки, он создает новый объект JFileChooser? Можно ли утилизировать его, или же Java сделать это автоматически для меня? общественного недействительный buttonPressed () {JFileChooser Chooser = NULL; LookAndFeel previousLF = UIManager.getLookAndFeel (); попробуйте {UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName ()); = новый Chooser JFileChooser (); UIManager.setLookAndFeel (previousLF); } Задвижка (IllegalAccessException | UnsupportedLookAndFeelException | InstantiationException | ClassNotFoundException е) место {} File = новый файл ( "C: \\"); chooser.setCurrentDirectory (местоположение); chooser.setDialogTitle ( "Выберите свой каталог"); chooser.setFileSelectionMode (JFileChooser.DIRECTORIES_ONLY); chooser.setAcceptAllFileFilterUsed (ложь); Chooser. showOpenDialog (рама); }
Loligans
1

голосов
2

ответ
343

Просмотры

Консультировать необходимо заполнить Dispose / финализац

Ниже урезанная версия C # код, который помогает захватить ключ PrintScreen. Эта работа, как я ожидал, и испытания. Вопрос: Я знаю, детерминированного шаблон уничтожения / утилизации, который я начал проект, как показано ниже. Тем не менее, мне нужно некоторые экспертные советы, чтобы завершить свою Dispose и завершить метод. Любые рекомендации? RegisterPrintKey общественного класса: IDisposable {общественного делегат недействительный HotKeyPass (); публичное мероприятие HotKeyPass HotKey; частный IntPtr m_WindowHandle = IntPtr.Zero; частный MKEY m_ModKey = MKEY.MOD_CONTROL; частные ключи m_Keys = Keys.A; частный HotKeyWndProc m_HotKeyWnd = новый HotKeyWndProc (); [DllImport ( "User32.dll")] общественности статической BOOL ехЬегп RegisterHotKey (IntPtr WND, Int ID, режим MKEY, Ключи VK); [DllImport ( "User32.dll" )] Общественный статический ехЬегп BOOL UnregisterHotKey (IntPtr WND, внутр идентификатор); частный класс HotKeyWndProc: NativeWindow {общественного ИНТ m_WParam = 10000; общественный HotKeyPass m_HotKeyPass; защищенный переопределения недействительным WndProc (исх сообщение м) {если (m.Msg == 0x0312 && m.WParam.ToInt32 () == m_WParam) {если (m_HotKeyPass = нуль!) m_HotKeyPass.Invoke (); } Base.WndProc (исх м); }} Частные BOOL hasDisposed = ложь; защищенный виртуальный аннулируются Dispose (BOOL отчуждать) {если (hasDisposed) возвращение; если (утилизирует) {// объекты выпуска, принадлежащие этой инстанции HotKey = NULL; hasDisposed = TRUE; } M_WindowHandle = IntPtr.Zero; // Я полагаю, это не требуется. m_Keys = NULL; // мне нужно утилизировать это или реле на стеке (очистить, когда нить раскручивать свой стек) Do m_ModKey = NULL; m_HotKeyWnd.DestroyHandle (); } Общественного недействительными Dispose () {Dispose (истина); GC.SuppressFinalize (это); } ~ RegisterPrintKey () {Dispose (ложь); }} Общественного перечисления MKEY {MOD_ALT = 0x0001, 0x0002 = MOD_CONTROL, MOD_SHIFT = 0x0004, 0x0008 = MOD_WIN,} // мне нужно утилизировать это или реле на стеке (очистить, когда нить раскручивать свой стек) Do m_ModKey = NULL; m_HotKeyWnd.DestroyHandle (); } Общественного недействительными Dispose () {Dispose (истина); GC.SuppressFinalize (это); } ~ RegisterPrintKey () {Dispose (ложь); }} Общественного перечисления MKEY {MOD_ALT = 0x0001, 0x0002 = MOD_CONTROL, MOD_SHIFT = 0x0004, 0x0008 = MOD_WIN,} // мне нужно утилизировать это или реле на стеке (очистить, когда нить раскручивать свой стек) Do m_ModKey = NULL; m_HotKeyWnd.DestroyHandle (); } Общественного недействительными Dispose () {Dispose (истина); GC.SuppressFinalize (это); } ~ RegisterPrintKey () {Dispose (ложь); }} Общественного перечисления MKEY {MOD_ALT = 0x0001, 0x0002 = MOD_CONTROL, MOD_SHIFT = 0x0004, 0x0008 = MOD_WIN,}
Nair

Просмотр дополнительных вопросов

Связанные вопросы