2012-01-13 56 views
1

好吧NativeProcess无法在Windows上运行C#WPF应用程序

我们有一个运行我们的WPF应用程序的Adobe Air(AS3)应用程序。但WPF应用程序无法通过这种方式运行。我在EventViewer发现以下错误消息:

Faulting application name: Easysoft_MultiTouch_Document.exe, version: 1.0.0.0, time stamp: 0x4f0f2f9e 
Faulting module name: KERNELBASE.dll, version: 6.1.7600.16385, time stamp: 0x4a5bdfe0 
Exception code: 0xe0434352 
Fault offset: 0x000000000000aa7d 
Faulting process id: 0xeac 
Faulting application start time: 0x01ccd20c9e406d25 
Faulting application path: E:\Apps\PDFProgram\Easysoft_MultiTouch_Document.exe 
Faulting module path: C:\Windows\system32\KERNELBASE.dll 
Report Id: dc656dc1-3dff-11e1-8870-00268330b66c 

这里是Adobe AIR代码运行WPF应用程序:

// following condition is true 
if(NativeProcess.isSupported) 
     { 
     var file:File = new File("E:\\Apps\\GalleryProgram\\Easysoft_MultiTouch_Document.exe"); 
     trace(file.name); 
     var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
     nativeProcessStartupInfo.executable = file; 

     var process:NativeProcess = new NativeProcess(); 


     process.start(nativeProcessStartupInfo); 
     //.... 
    } 

我又写C#应用程序来运行这个WPF的可执行文件,但它也失败。

如何解决这个问题? WPF应用程序可以通过这种方式运行吗?任何解决方案

在此先感谢...

+0

你能否在正常的启动条件下运行你的WPF应用程序(例如,双击.exe文件)? – 2012-01-13 16:29:38

+0

Adob​​e可能会阻止此操作。 – Paparazzi 2012-01-13 16:36:15

+0

@BrianDriscoll WPF应用程序通过双击成功运行! – Jalal 2012-01-13 16:38:08

回答

2

你从过程中看到的具体的异常代码是0xe0434352。这表明抛出了一个托管异常。这意味着WPF进程很可能开始,至少要加载CLR并运行托管代码,然后抛出未处理的托管异常。

这意味着错误最有可能在WPF应用程序中。你是否证实它可以在盒子上运行?如果是这样,那么我会设置调试器以附加应用程序的启动,通过Adobe Air运行该方案并查看此过程崩溃的原因。

+0

WPF应用程序通过双击成功运行!错误对话框是Windows错误框。如果抛出未处理的托管异常,则应该出现CLR异常对话框。 – Jalal 2012-01-13 16:42:39

+1

@JalalAmini我将采取的下一步是设置调试器,以启动进程启动并以此方式进行调试。 – JaredPar 2012-01-13 16:43:18

1

我会尝试在WPF应用程序引入扼流圈点和记录异常到一个文本文件,让您对错误的附加信息,像这样:

 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 

然后,在回调,写任何异常细节到一个文件:

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
    { 
     if (e.IsTerminating) 
     { 
      // Add your logging code here. 
     } 
    } 

这种方式,您将有关于崩溃背后的原因的更多信息,你可以去那里格罗姆。

相关问题