在我的应用中,我有一个事件已对一些jira查询进行了硬编码,然后使用此查询作为参数创建新进程(该查询隐藏在下面的示例中,但可以正常工作):
private void recentPinItem_submitBug_ItemClick(object sender, RecentItemEventArgs e)
{
var jiraQuery = "http://jiraprod1.xxx";
Process.Start(jiraQuery);
}
此事件被分配给两个不同的lastPinItems(recentPinItems1和最近的PinItem2-它们位于不同的backstageview控件上)。
有什么问题:
在lastPinItem1上单击此事件可以正常工作。打开带有jira并具有正确查询的浏览器,并且该应用程序仍在运行-确定
在最近的PinItem2上单击,出现错误。已打开带有jira的浏览器,但同时显示了Unhandled Exceprion(NullReferenceException)。继续后,应用程序运行正常。
我观察到的是: 此事件始终适用于lastPinItem1 有时,此事件对lastPinItem2可以正常使用,但是大多数情况下,上面描述的错误。
您知道什么会导致这种行为吗? 我尝试过:
Process.Start(new ProcessStartInfo
{
FileName = jiraQuery,
Arguments = "",
UseShellExecute = true
});
,以及UseShellExecute = false
但这也没有帮助
编辑: 这与wuestiopn“ nullreferenceexception是什么”的建议不重复。我知道这个例外是什么意思。我不知道为什么在这种情况下它不应该显示
EDIT2: 更多细节: 没有更多与此事件相关的代码。 我已经做了什么:
var jiraQuery = "http://jiraprod1.xxx";
行上设置了一个断点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();
现在此错误消失了。