WPF DocumentViewer не выпускает файл XPS

Ваш подход к доступу к ключу с пробелом правильный, но, похоже, вы забыли заметить данные в «Usage Data», это данные типа массива / списка.

так что вам нужно получить к нему доступ с помощью index или json deep scan или многих других опций.

здесь мало,

# to get all usage data as list
* def usageData = $example.integration.serviceData.['Usage Data']
# to get all stage in usage data
* def stages = $example.integration.serviceData.['Usage Data']..Stage
10
задан 4 revs, 3 users 64%bjutus 26 November 2008 в 00:04
поделиться

6 ответов

Сделайте xpsDocument участником, затем не звоните близко () на нем :)

2
ответ дан 4 December 2019 в 02:27
поделиться

http://blogs.msdn.com/junfeng/archive/2008/04/21/use-htrace-to-debug-handle-leak.aspx

Можно выяснить, кто держит дескриптор и неуправляемое использование стека WinDbg

Править: И конечно, можно также получить управляемое отслеживание стека и ввести по абсолютному адресу вокруг через расширение SOS (http://msdn.microsoft.com/en-us/library/bb190764.aspx)

0
ответ дан 4 December 2019 в 02:27
поделиться

Спасибо за ответ!

Это - немного низкого уровня, но я буду иметь в виду его, когда у меня закончатся идеи. Так или иначе я узнал немного больше об ошибке. Конкретный документ, который вызывает исключение, имеет изображения, вставленные в них. Когда я удаляю изображения, исключения не происходит. Это могло быть ошибкой DocumentViewer, возможно, но я все еще пробую...

0
ответ дан 4 December 2019 в 02:27
поделиться

Я подозреваю, что Вы сталкиваетесь с той же проблемой как http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic59281.aspx

Походит на ошибку в DocumentViewer, он должен был избавиться от вложенного BitmapDecoders на завершении или загрузить изображение другой опцией кэширования растровых изображений.

0
ответ дан 4 December 2019 в 02:27
поделиться

Нет, до сих пор все еще ничто.

Только для перечисления я попробовал следующие методы, которые перестали работать:

  1. Установите все в NULL в событии "Closed" окна прежде, чем удалить файл. Это включает DocumentViewer. Свойство Document и объект DocumentViewer.

  2. Используемый ShowDialog (), чтобы открыть окно и установить его в NULL впоследствии. Перемещенный удаление файла к событию "Exit" Системы. Windows. Объект приложения, который открывает окно. Все еще выдает исключение, что файл используется.

Ошибка DocumentViewer???

0
ответ дан 4 December 2019 в 02:27
поделиться

Вам необходимо закрыть System.IO.Packaging.Package, из которого был открыт XpsDocument, назначенный программе просмотра. Кроме того, если вы хотите иметь возможность снова открыть тот же файл в том же сеансе приложения, вам придется удалить пакет из PackageStore.

Попробуйте

var myXpsFile = @"c:\path\to\My XPS File.xps";
var myXpsDocument = new XpsDocument(myXpsFile);
MyDocumentViewer.Document = myXpsDocument;

//open MyDocumentViwer's Window and then close it
//NOTE: at this point your DocumentViewer still has a lock on your XPS file
//even if you Close() it
//but we need to do something else instead

//Get the Uri from which the system opened the XpsPackage and so your XpsDocument
var myXpsUri = myXpsDocument.Uri; //should point to the same file as myXpsFile

//Get the XpsPackage itself
var theXpsPackage = System.IO.Packaging.PackageStore.GetPackage(myXpsUri);

//THIS IS THE KEY!!!! close it and make it let go of it's file locks
theXpsPackage.Close();

File.Delete(myXpsFile); //this should work now

//if you don't remove the package from the PackageStore, you won't be able to
//re-open the same file again later (due to System.IO.Packaging's Package store/caching
//rather than because of any file locks)
System.IO.Packaging.PackageStore.RemovePackage(myXpsUri);

Да, я знаю, что вы, вероятно, не открывали XpsDocument с пакетом и может даже не знать, что это такое - или заботиться, - но .NET сделал это «за» вас за кулисами и забыл очистить после себя.

6
ответ дан 4 December 2019 в 02:27
поделиться
Другие вопросы по тегам:

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