2012-01-13 110 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. 
     } 
    } 

這種方式,您將有關於崩潰背後的原因的更多信息,你可以去那裏格羅姆。

相關問題