none
Transcoder for JPG Biler funktioniert nicht RRS feed

  • Allgemeine Diskussion

  • Ich habe eine Transcoder für JPg Bilder geschrieben. Das Problem ist, daß die Exception "die Anwendung ist ausgelastet" geworfen wird, sobald ich einen Aufruf einer der Funktionen des Transcoders mache. Hier der Code:

    Imports Windows.Storage.Streams
    Imports Windows.Graphics.Imaging
    
    Public NotInheritable Class JpegBitmapTranscoder
    
        Dim strm As IRandomAccessStream = Nothing
        Dim EncStrm As IRandomAccessStream = Nothing
        Dim EncCrt As Boolean = False
        Dim Encdef As BitmapEncoder = Nothing
        Dim Decdef As BitmapDecoder = Nothing
        Dim BmpFrame As BitmapFrame = Nothing
        Public Sub New(stm As IRandomAccessStream)
            MyBase.New
            strm = stm.CloneStream
            EncCrt = False
        End Sub
        Public Sub New(Decstm As IRandomAccessStream, EncStm As IRandomAccessStream)
            MyBase.New
            strm = Decstm.CloneStream
            EncStrm.CloneStream()
            EncCrt = True
            EncStrm = EncStm
        End Sub
    
        Public Function GetDecoder() As BitmapDecoder
            Dim ex As Exception
            Dim decdeftsk As Task(Of BitmapDecoder)
            Dim encdeftsk As Task(Of BitmapEncoder)
            strm.Seek(0)
            Try
                Using sstm As IInputStream = strm.CloneStream
                    decdeftsk = BitmapDecoder.CreateAsync(sstm).AsTask
                    decdeftsk.Wait()
                    Decdef = decdeftsk.Result
                    If Decdef IsNot Nothing Then
                        encdeftsk = BitmapEncoder.CreateForTranscodingAsync(EncStrm, Decdef).AsTask
                        encdeftsk.Wait()
                        Encdef = encdeftsk.Result
                    End If
    
    
                End Using
                Return Decdef
            Catch ex
                ' The exception with name " Messagefilter, the application is busy" ocuurs in every call of this fuction  
                Return Nothing
            End Try
    
    
        End Function
        Public Function GetFrame() As BitmapFrame
            Dim Frametsk As Task(Of BitmapFrame)
            If Decdef IsNot Nothing Then
                Frametsk = Decdef.GetFrameAsync(0).AsTask
                Frametsk.Wait()
                Return Frametsk.Result
            Else
                Return Nothing
            End If
        End Function
        Public Function GetImageStream() As ImageStream
            Dim strmtsk As Task(Of ImageStream)
            If Decdef IsNot Nothing Then
                strmtsk = Decdef.GetThumbnailAsync().AsTask
                strmtsk.Wait()
                Return strmtsk.Result
            Else
                Return Nothing
            End If
        End Function
        Public Function getEncodedBitmap() As IRandomAccessStream
            Return EncStrm
        End Function
        Public Sub Encode(st As IRandomAccessStream)
            Dim EncPrTsk As Task
            Dim cpytsk As Task(Of ULong)
            If Encdef IsNot Nothing Then
                EncPrTsk = Encdef.FlushAsync().AsTask
                EncPrTsk.Wait()
                cpytsk = RandomAccessStream.CopyAsync(EncStrm, st).AsTask
            End If
        End Sub
    End Class
    


    Markus Lein Madausstr 2 51109 Köln (Cologne) Germany

    Mittwoch, 11. Mai 2016 15:25

Alle Antworten

  • Hallo Markus,

    Ändert sich etwas, wenn Du folgende drei Zeilen:

                    decdeftsk = BitmapDecoder.CreateAsync(sstm).AsTask
                    decdeftsk.Wait()
                    Decdef = decdeftsk.Resul

    durch diese ersetzt?

                    decdeftsk = await BitmapDecoder.CreateAsync(sstm)
    

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 12. Mai 2016 14:41
    Moderator