El hilo que llama no puede acceder a este objeto, incluso después de la adición de Dispatcher.Invoke

sero:

El hilo que llama no puede acceder a este objeto porque posee un subproceso diferente, incluso después de la adición Dispatcher.Invoke.

El problema sigue intacto incluso después de la adición Dispatcher.Invoke.

async Task capturePredict()
{
    await Dispatcher.Invoke( async () =>
    {
        PngBitmapEncoder image = new PngBitmapEncoder();
        image.Frames.Add(BitmapFrame.Create(bitmap));

        using (Stream stream = File.Create(@"E:\ImageClassificationTraining\image.png"))
        {
            await Task.Run(() => image.Save(stream));
        }
    });
}
Clemens:

En contraste con la decodificación de un BitmapSource (que puede ser congelado para que sea transversal hilo accesible), codificación puede aparentemente no se puede hacer en un hilo que no sea el hilo de interfaz de usuario.

sin embargo es posible separar la etapa de codificación de escribir el archivo, por algo como esto:

public async Task SaveImageAsync(BitmapSource bitmap, string path)
{
    var encoder = new PngBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(bitmap));

    using (var memoryStream = new MemoryStream())
    {
        encoder.Save(memoryStream);
        memoryStream.Position = 0;

        using (var fileStream = File.Create(path))
        {
            await memoryStream.CopyToAsync(fileStream);
        }
    }
}

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=378052&siteId=1
Recomendado
Clasificación