none
Async Problem mit GetFixedDocumentSequence RRS feed

  • Frage

  • Hallo zusammen,

    ich will eine kleine Klasse schreiben, die zu einem XPS-Dokument ein Array von Vorschaubildern (für jede Seite einzeln) generiert. Das hat auch super geklappt, solange ich es nicht asyncron gemacht habe. Meine Klasse sieht jetzt in etwa so aus:

    class XpsDoc
    {
    	private RenderTargetBitmap[] xpsThumbnails = null;
    	private path = "";
    	
    	public XpsDoc(string Path)
    	{
    		path = Path;
    	}
    	public RenderTargetBitmap[] XpsThumbnails
            {
                 get{ return xpsThumbnails; }
            }
    	
    	public async Task LoadThumbnailsAsync()
    	{
    		xpsThumbnails = await Task<RenderTargetBitmap[]>.Run(() =>
    		{
    			XpsDocument xpd = new XpsDocument(path, FileAccess.Read, CompressionOption.Normal);
    			FixedDocumentSequence document = xpd.GetFixedDocumentSequence();
    			RenderTargetBitmap[] thmbArray = new RenderTargetBitmap[document.DocumentPaginator.PageCount];
    			
    			//Pages rendern
    			
    			xpd.Close();
    			return thmbArray;
    		});
    	}
    }


    Der Aufruf im Hauptprogramm erfolgt dann so:

    XpsDoc xdoc = new XpsDoc("C:\\test.xps");
    await xdoc.LoadThumbnailsAsync();

    Leider kriege ich eine XamlParseException bei dem Methodenaufruf "xpd.GetFixedDocumentSequence()":

    Zusätzliche Informationen: Zeilennummer "2" und Zeilenposition "21" von "Durch den Aufruf des Konstruktors für Typ "System.Windows.Documents.DocumentReference", der den angegebenen Bindungseinschränkungen entspricht, wurde eine Ausnahme ausgelöst."

    Weiß jemand, wo der Fehler liegen könnte? Es handelt sich offenbar um ein Multithreading Problem, da der Code ohne async gut funktioniert. Allerdings weiß ich nicht, was an dem Code problematisch ist. Die XPS-Datei ist im Hauptprogramm nicht geöffnet.


    Mittwoch, 6. April 2016 09:39

Antworten

Alle Antworten