Почему BinaryWriter закрывает внешний Поток на распоряжении, и как предотвратить это? (.NET C#)

Итак, я хотел сделать что-то немного другое: ТОЛЬКО границу снизу, чтобы имитировать разделитель ListView. Я изменил ответ Пита Дельпорта и получил следующее:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
   <item>
      <shape 
        android:shape="rectangle">
            <solid android:color="@color/background_trans_light" />    

        </shape>
   </item>

    <!-- this mess is what we have to do to get a bottom border only. -->
   <item android:top="-2dp"
         android:left="-2dp"
         android:right="-2dp"
         android:bottom="1px"> 
      <shape 
        android:shape="rectangle">    
            <stroke android:width="1dp" android:color="@color/background_trans_mid" />
            <solid android:color="@null" />
        </shape>
   </item>

</layer-list>

Обратите внимание, используя px вместо dp, чтобы получить ровно 1 пиксельный делитель (некоторые телефонные DPI приводят к исчезновению линии 1dp).

30
задан Jader Dias 5 July 2009 в 20:55
поделиться

3 ответа

Только не вызывайте Dispose, используйте вместо этого Flush, это безопасно.

9
ответ дан 27 November 2019 в 23:09
поделиться

В случае BinaryWriter , это не прямой вариант (хотя некоторые обертки потоков позволяют управлять этим, например GZipStream и т.д.)

У Джона есть NonClosingStreamWrapper в MiscUtil , который должен работать: вы помещаете свой поток в незакрывающуюся оболочку и передаете оболочку BinaryWriter . По сути, это проходит через все, кроме Close () и Dispose () .

21
ответ дан 27 November 2019 в 23:09
поделиться

Защищенный метод BinaryWriter.Dispose (bool) является виртуальным, и все, что он делает, - закрывает поток (вы можете проверить его истинность в Reflector ). -Этот метод вызывается методом Dispose ().

Вы можете просто унаследовать класс от BinaryWriter и переопределить метод Dispose (bool), чтобы он ничего не делал или что-то еще.

9
ответ дан 27 November 2019 в 23:09
поделиться
Другие вопросы по тегам:

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