Process.Start()会导致未处理的异常,但并非总是如此

时间:2019-02-05 12:15:28

标签: c# process.start

在我的应用中,我有一个事件已对一些jira查询进行了硬编码,然后使用此查询作为参数创建新进程(该查询隐藏在下面的示例中,但可以正常工作):

private void recentPinItem_submitBug_ItemClick(object sender, RecentItemEventArgs e)
    { 
      var jiraQuery = "http://jiraprod1.xxx";
      Process.Start(jiraQuery);
    }

此事件被分配给两个不同的lastPinItems(recentPinItems1和最近的PinItem2-它们位于不同的backstageview控件上)。

有什么问题:

  1. 在lastPinItem1上单击此事件可以正常工作。打开带有jira并具有正确查询的浏览器,并且该应用程序仍在运行-确定

  2. 在最近的PinItem2上单击,出现错误。已打开带有jira的浏览器,但同时显示了Unhandled Exceprion(NullReferenceException)。继续后,应用程序运行正常。

我观察到的是: 此事件始终适用于lastPinItem1 有时,此事件对lastPinItem2可以正常使用,但是大多数情况下,上面描述的错误。

您知道什么会导致这种行为吗? 我尝试过:

  Process.Start(new ProcessStartInfo
  {
    FileName = jiraQuery,
    Arguments = "",
    UseShellExecute = true
  });

,以及UseShellExecute = false 但这也没有帮助

编辑: 这与wuestiopn“ nullreferenceexception是什么”的建议不重复。我知道这个例外是什么意思。我不知道为什么在这种情况下它不应该显示

EDIT2: 更多细节: 没有更多与此事件相关的代码。 我已经做了什么:

  1. 我已在var jiraQuery = "http://jiraprod1.xxx";行上设置了一个断点
  2. F10
  3. 应用程序转到“ Program.cs”,并在Application.Run(MainView)行中。 此时将引发“未处理的异常”。 详细说明:
  

System.NullReferenceException HResult = 0x80004003消息=对象   引用未设置为对象的实例。
  来源= DevExpress.XtraBars.v18.1 StackTrace:at   DevExpress.XtraBars.Ribbon.Handler.RecentControlHandler.OnMouseDown(DXMouseEventArgs   ee)   DevExpress.XtraBars.Ribbon.RecentItemControl.OnMouseDown(MouseEventArgs   e)在System.Windows.Forms.Control.WmMouseDown(Message&m,   MouseButtons按钮,Int32单击)   System.Windows.Forms.Control.WndProc(Message&m)位于   DevExpress.Utils.Controls.ControlBase.WndProc(Message&m)在   DevExpress.XtraEditors.BaseControl.WndProc(Message&msg)在   System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)   在System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&   m)在System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr   hWnd,Int32 msg,IntPtr wparam,IntPtr lparam)   System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&msg)
  在   System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr   dwComponentID,Int32原因,Int32 pvLoopData),位于   System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32   原因,ApplicationContext上下文)   System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32   原因,ApplicationContext上下文)   System.Windows.Forms.Application.Run(Form mainForm)位于   TesterEssentials.Program.Main(String [] args)在   C:\ 99999099_TCK_ITV_EC_BODY_FAS-903_Test_Editor \ XMLGen \ TestScriptGenerator \ Program.cs:line   61

还有,我做出解决方法并创建一个新线程:

  Application.DoEvents();
  new Thread(delegate ()
  {
    Thread.CurrentThread.IsBackground = true;
    Process.Start(new ProcessStartInfo
    {
      FileName = jiraQuery,
      Arguments = "",
      UseShellExecute = true
    });
  }).Start();
  Application.DoEvents();

现在此错误消失了。

0 个答案:

没有答案