|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 14:39 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
user7320, и не стыдно? IDisposable + оператор using ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 14:44 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 14:45 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
Т. е. просто отдать на откуп сборщику мусора мешает только беспокойство, что когда он там ещё этот мусор уберёт, а using - это "здесь и сейчас"? Ну, стыдно, конечно. Но меня удивило, что вот так просто человек может написать "stream.close() - это вам не хухры-мухры", и толпа специалистов будет писать простынми кода, спорить и всё равно придут к не очень удобному решению, которое, судя по всему, утилизирует целый специальный элемент синтаксиса для решения одной единственной задачи (выбрасывания исключений в некотором исключительном случае). И доступно это будет только с версии 7 (т. е. относительно недавно для такого уже немолодого языка). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 15:15 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
user7320Т. е. просто отдать на откуп сборщику мусора мешает только беспокойство, что когда он там ещё этот мусор уберёт, а using - это "здесь и сейчас"? Дело в освобождении внешних ресурсов, которые находятся вне досягаемости CLR. Открытый файл означает, что ОС держит некий набор данных и именно мы его должно освобождать как можно раньше. Именно для этого, а не для освобождения памяти, нужна связка using/IDisposable. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 15:27 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
Зачем тогда нужен метод Close у класса Stream, если даже в МСДНе вместо него фактически советуют использовать Dispose (и using, соответственно)? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 15:38 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
bazile, и еще именно для неуправляемых ресурсов Finalize, а точнее IDispose pattern. в MSDN отлично написан. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 15:39 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
user7320, потому что если мы открыли файл (поток), то мы должны иметь возможность закрыть его. Также название Close() больше подходит по смыслу чем Dispose(). В подобных классах Close() и Dispose() делают одно и тоже. Совет из MSDN правильный. Обрати внимание, что это совет, а не требование. У нас есть выбор между явным вызовом Close() и его же неявным вызовом при использовании using() { ... }. У варианта с using есть еще полезный эффект. Переменная внутри него видна только в блоке using. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 15:45 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
user7320, кстати Dispose/Close на самом-то деле не освобождают неуправляемые ресурсы. Это так, чтобы не было недопонимания. В любом случае все осовобождение будет через GCC ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 15:50 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
netivan, finalize это последняя возможность освободить внешний ресурс, если Dispose() не был вызван. В подобном случае Finalize() и IDisposable будут работать в паре. Если вызван Dispose(), то Finalize() уже не нужен (GC.SuppressFinalize()). Не говоря уже о том, что сработавший Finalize() продлит время жизни объекта на одно поколение. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 15:50 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
bazile, именно поэтому я и дал ссылку на правильную реализацию. Которая работает именно так как вы описали! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 15:51 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
netivanкстати Dispose/Close на самом-то деле не освобождают неуправляемые ресурсы. Не говори глупостей. Взгляни на этот класс и расскажи мне как Dispose() не освобождает здесь неуправляемый ресурс: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 16:07 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
bazile, да, я неправильно выразился. Хотел донести мысль, что для управляемых всякие =null лишь помогают быстрее их "удалить". В данном случае да все дескрипторы закрываются. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 16:13 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
netivanкстати Dispose/Close на самом-то деле не освобождают неуправляемые ресурсы. Это так, чтобы не было недопонимания. В любом случае все осовобождение будет через GCC Коллектор не занимается чисткой unmanaged ресурсов. Садись, двойка. RTFM. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 16:14 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
Собственно, оно даже понятно из названия: неуправляемый ресурс ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 16:15 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
МСУ, тебя уже выпустили?? либо ты не понял о чем я, либо прикидываешься. Вообщем ТС дали инфу для размышления. Осталось прочитать статейку http://msdn.microsoft.com/ru-ru/library/b1yfkh5e(v=vs.100).aspx и тд ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 16:30 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
автор Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Хе-хе, оказывается, Дотнет зачастую - просто обёртка над обычным виндовым АПИ. А я думал, у него всё низкоуровнево с нуля написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 16:50 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
user7320, обертка с нуля написана :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 16:52 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
user7320Хе-хе, оказывается, Дотнет зачастую - просто обёртка над обычным виндовым АПИ. А операционная система всего лищь обертка над BIOS-ом. Нет чтобы с нуля всё написать, да? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 16:57 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
Перечитал, я спокоен... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 16:59 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
bazileА операционная система всего лищь обертка над BIOS-ом. а БИОС всего лишь надстройка над теми сигналами , которыми оперирует материнская плата.... А Материнская плата оперирует электрическими сигналами А Электрические сигналы это электроны... А электроны это кварки, бозоны.... Т.е. Любая программа , на самом деле ,это управление кварками. гы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 17:16 |
|
А как эта проблема решается в C#?
|
|||
---|---|---|---|
#18+
user7320автор Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Хе-хе, оказывается, Дотнет зачастую - просто обёртка над обычным виндовым АПИ. А я думал, у него всё низкоуровнево с нуля написано.Почитайте хотябы ВикипкдиЮ. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2013, 20:24 |
|
|
start [/forum/topic.php?fid=20&msg=38245350&tid=1404758]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
123ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 300ms |
total: | 525ms |
0 / 0 |