Jump to content

rfessler

Members
  • Posts

    2
  • Joined

  • Last visited

Posts posted by rfessler

  1. 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!

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.