Quantcast
Channel: LabVIEW topics
Viewing all articles
Browse latest Browse all 69015

.NET Control Error 1172 - Only in executable

$
0
0

Hi everyone,

 

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!


Viewing all articles
Browse latest Browse all 69015

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>