关闭VI时LabVIEW VI调用.NET程序集崩溃



主要软件: LabVIEW Development Systems>>LabVIEW Professional Development System
主要软件版本: 2016
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Professional Development System

问题:

我有一个LabVIEW VI调用.NET程序集。 VI似乎加载并执行程序集,但是当我关闭VI时,LabVIEW会崩溃。如果我在.NET应用程序中调用.NET程序集,那么它会加载,执行和卸载而不会出错。


解答:

对于这种行为的一个潜在的解释是LabVIEW将每个.NET程序集加载到其自己的应用程序域中。 因此,为了真正在LabVIEW之外测试您的.NET程序集并仔细模拟LabVIEW处理程序集的方式,您还应该将程序集加载到自己的应用程序域。

C#中的以下代码段描述了在名为ApplicationName的应用程序的单独应用程序域中调用名为MyAssembly的程序集的过程:



如果您的程序集在AppDomain.Unload(appDomain) 调用中崩溃,那么可能表示您的程序集没有正确处理资源。运行时错误的一个例子如下:



一般来说,程序集的Dispose()方法应该处理所有非托管资源的清理。在LabVIEW之外又得到此错误足以确定进一步的故障排除应集中在程序集本身上,并且LabVIEW崩溃并非意外报错。

有关正确编写程序集Dispose方法的更多信息已超出了本文档的范围,但下面链接的资源可能会对您有用。


相关链接:

附件:





报告日期: 04/14/2017
最近更新: 09/11/2017
文档编号: 7KDBIB16