Estoy tratando de abrir un archivo pdf usando el siguiente código de trabajo que usé anteriormente en otra aplicación,
pero esta vez obtengo System.Runtime.InteropServices.COMException cuando el flujo llega a esta línea: Windows.System.Launcher.LaunchFileAsync(pdffile);
¿Cuál es el significado de esta excepción y cómo deshacerse de ella?
Tenga en cuenta que sin preocuparse por esta excepción (deshabilitarla),
el archivo todavía no se puede abrir.
Tenga en cuenta: el archivo existe en mi carpeta aislada (verificada con wpowertool),
Probé con 2 archivos diferentes, por lo que no debería ser una cuestión de corrupción de archivos.
public void openFile(string options) { System.Diagnostics.Debug.WriteLine("options: " + options); string optVal = JsonHelper.Deserialize<string[]>(options)[0]; asyncOpen(optVal); } public async Task asyncOpen(string filename) { filename = filename.Substring(2, filename.Length - 2); filename = filename.Replace("//", "/").Replace("/", "\\"); Windows.Storage.StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder; Debug.WriteLine("local: " + local.Path); Windows.Storage.StorageFile pdffile = await local.GetFileAsync(filename); Debug.WriteLine("pdffile: " + pdffile.Name); //// Launch the pdf file. Windows.System.Launcher.LaunchFileAsync(pdffile); }esta publicación de MSDN me pertenece. Sí, el archivo está instalado y tengo Acrobat Reader.
Tenga en cuenta que este código C# es un complemento phonegap/cordova que se llama a través de javascript en mi aplicación híbrida.
Preste atención a los comentarios en este artículo de MSDN - Launcher.LaunchFileAsync(IStorageFile) :
La aplicación de llamada debe estar visible para el usuario cuando se invoca la API.
Esta API debe llamarse desde un subproceso ASTA (también conocido como subproceso de interfaz de usuario).
Deployment.Current.Dispatcher.BeginInvoke(() => { asyncOpenFile(options); });