rfessler Posted July 19, 2013 Report Share Posted July 19, 2013 Hi everyone, I posted this over in the NI forums as well, but maybe I'll have more luck over here. I just ran into an issue this morning after building an executable version of my program, which uses the Actor Framework. It contains a .NET control (version 3.5) on one of my front panels. There's a function that I call to pass some XML strings to the control, which then handles filling in the data. This works just as expected in the development environment, but when I build an executable and run that, the control just sits there without being properly filled in. I attached an error indicator to the invoke node, which is showing me this error: Error calling method InstrumentDataGridView.InstrumentDataGridView.LabVIEW_FillTableFromXML, (System.ArgumentNullException: Key cannot be null.Parameter name: key) <append><b>System.ArgumentNullException</b> in Experiment UI.lvlib:Experiment UI Panel.lvclass:Actor Core.vi:1->Actor Framework.lvlib:Actor.lvclass:Actor.vi:4->Actor Framework.lvlib:Actor.lvclass:Actor.vi.ACBRProxyCaller.D140000E I then ran DebugView to get some more detailed information on what was happening and here's the log that it spit out: 00000006 80.98936462 [3404] Created new AppDomain: ICAS-EPR.exe for Reflection 00000007 82.80818939 [3404] Created new AppDomain: ICAS-EPR.exe for Run 00000008 85.75064087 [3404] DNError: Error calling method InstrumentDataGridView.InstrumentDataGridView.LabVIEW_NotifyAcquisitionStopped (1172). System.ArgumentNullException: Key cannot be null. 00000009 85.75064087 [3404] Parameter name: key 00000010 85.75064087 [3404] at System.Collections.Hashtable.get_Item(Object key) 00000011 85.75064087 [3404] at NationalInstruments.LabVIEW.SyncInvokeTable.LookupControl(Object key) 00000012 85.75064087 [3404] at NationalInstruments.LabVIEW.DNRuntime.InvokeMethod(Int32 invokeType, Type type, ObjectId objectId, String methodName, Type[] parameterTypes, Int32[] parameterFlags, ObjectId[]& parameterIds) 00000013 85.75064087 [3404] 00000014 114.37963104 [3404] DNError: Error calling method InstrumentDataGridView.InstrumentDataGridView.LabVIEW_FillTableFromXML (1172). System.ArgumentNullException: Key cannot be null. 00000015 114.37963104 [3404] Parameter name: key 00000016 114.37963104 [3404] at System.Collections.Hashtable.get_Item(Object key) 00000017 114.37963104 [3404] at NationalInstruments.LabVIEW.SyncInvokeTable.LookupControl(Object key) 00000018 114.37963104 [3404] at NationalInstruments.LabVIEW.DNRuntime.InvokeMethod(Int32 invokeType, Type type, ObjectId objectId, String methodName, Type[] parameterTypes, Int32[] parameterFlags, ObjectId[]& parameterIds) 00000019 114.37963104 [3404] 00000020 133.64822388 [3404] Destroying AppDomain: ICAS-EPR.exe for Reflection 00000021 133.68054199 [3404] Destroying AppDomain: ICAS-EPR.exe for Run As you can see, I get a "System.ArgumentNullException: Key cannot be null." error when calling both LabVIEW_NotifyAcquisitionStopped and LabVIEW_FillTableFromXML. Neither of these functions throw that type of exception. I thought that maybe the constructor wasn't being called, but I added some code to the constructor to write to a file and that functioned as expected. Then I wrote a new function that wrote to a file and called that when the VI loaded. That function worked fine and didn't throw any errors. I am completely stumped as to why this is happening. Both the development environment and the executable use the exact same DLL code. I appreciate any help I can get! Quote Link to comment
rfessler Posted July 22, 2013 Author Report Share Posted July 22, 2013 This has been solved! See this thread: http://forums.ni.com/t5/LabVIEW/NET-Control-Error-1172-Only-in-executable/td-p/2497534 Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.