Запускает ли инициализация WriteableBitmap фоновый поток?

Я не знаю, нужно ли мне предоставлять дополнительную информацию, но я просматривал свой код и не смог найти ничего другого, что вызывает эту проблему.

У меня есть WriteableBitmap где-то внутри моего кода, который я объявляю только через WriteableBitmap wb;

Теперь, предоставляя только эту информацию, когда я закрываю главное окно, процесс отладки в VS 2013 останавливается, и все вроде бы хорошо. Однако, когда я инициализирую wb, как в

wb = new WriteableBitmap(dimx, dimy, 96, 96, PixelFormats.Indexed8, paletteGray);

после этого не запускать какую-либо другую строку кода, а затем закрыть окно, VS, похоже, не останавливает отладку, то есть мне нужно нажать кнопку «стоп», чтобы остановить все, что также занимает много времени (до 15 секунд). ) после инициализации wb.

Может быть, я что-то упустил из WriteableBitmap здесь?


person philkark    schedule 30.11.2013    source источник
comment
Я бы сказал нет, так как я не могу воспроизвести это поведение. Должна быть какая-то другая часть вашего приложения, которая вызывает это. Вы вообще проверяли, увеличивается ли количество потоков при создании WriteableBitmap?   -  person Clemens    schedule 01.12.2013
comment
Я проверил до и после инициализации wb с помощью Process.GetCurrentProcess().Threads.Count. Перед инициализацией wb я получаю 30, а сразу после этого получаю 31, поэтому похоже, что поток создается, но я, честно говоря, не понимаю, зачем и как с этим бороться. Кроме того, почему работает 30 потоков?   -  person philkark    schedule 01.12.2013
comment
См. здесь.   -  person Clemens    schedule 01.12.2013
comment
Спасибо, это отвечает на большое количество потоков. Но я до сих пор понятия не имею, почему инициализация wb открывает новый поток, который остается после закрытия окна...   -  person philkark    schedule 01.12.2013
comment
Даже если поток создается при создании WriteableBitmap, это не объясняет, почему завершение приложения занимает 15 секунд.   -  person Clemens    schedule 01.12.2013
comment
Я посмотрю дальше, откуда может возникнуть эта проблема, и опубликую ответ, если найду его.   -  person philkark    schedule 01.12.2013
comment
WriteableBitmap не создает потоки напрямую во время построения; но он вызывает какой-то нативный код во время построения - кто знает, что там происходит...   -  person Peter Ritchie    schedule 01.12.2013
comment
А как насчет кода, который инициализирует значения dimx, dimy, panelGray? Создавать там темы?   -  person Suresh    schedule 01.12.2013
comment
@sthotakura Я обнаружил одну возможную проблему, и я могу обновить вопрос для нее. У меня есть много объектов, каждый из которых имеет один WriteableBitmap, но все они используют один и тот же paletteGray, поэтому я создаю его только один раз, будучи статическим членом, и это может вызвать проблему.   -  person philkark    schedule 01.12.2013