vb.net调用MATLAB生成的com组件的内存问题
各位大神,小弟使用matlab的函数(一个很简单的求和函数)生成了com组件,然后在vb.net中进行调用。在进行调用时,发现如果使用下面的方式内存会一直增加。ReleaseComObject返回的值n是0,表示应该已经释放完了,但是内存一直没有下降。
calculation_function1 = New add_com.jisuan '载入时初始化
For i = 1 To 1000
calculation_function1.add(1, c, i, 2)
TextBox1.Text = c
Next
n = Marshal.ReleaseComObject(calculation_function1)
但是我使用下面的方法时,内存一直很稳定。我的问题是同样是调用多次calculation_function1,初始化和释放的位置不同(比如我这两个例子)为什么会导致内存一个释放完成,一个释放未完成呢? 上面的程序,在循环外面进行初始化是我希望的,因为每次初始化com组件时速度比较慢,所以同样是进行完整的一次循环,计算速度上面明显要快。有什么办法修改代码即保证计算速度,同时内存又可以正确释放呢?先行谢过。
For i = 1 To 1000
calculation_function1 = New add_com.jisuan '载入时初始化
calculation_function1.add(1, c, i, 2)
TextBox1.Text = c
n = Marshal.ReleaseComObject(calculation_function1)
Next
calculation_function1 = New add_com.jisuan '载入时初始化
For i = 1 To 1000
calculation_function1.add(1, c, i, 2)
TextBox1.Text = c
Next
n = Marshal.ReleaseComObject(calculation_function1)
但是我使用下面的方法时,内存一直很稳定。我的问题是同样是调用多次calculation_function1,初始化和释放的位置不同(比如我这两个例子)为什么会导致内存一个释放完成,一个释放未完成呢? 上面的程序,在循环外面进行初始化是我希望的,因为每次初始化com组件时速度比较慢,所以同样是进行完整的一次循环,计算速度上面明显要快。有什么办法修改代码即保证计算速度,同时内存又可以正确释放呢?先行谢过。
For i = 1 To 1000
calculation_function1 = New add_com.jisuan '载入时初始化
calculation_function1.add(1, c, i, 2)
TextBox1.Text = c
n = Marshal.ReleaseComObject(calculation_function1)
Next
...全文
相关推荐
VB程序中实现调用MATLAB的方法.zip
浏览并添加刚才生成的MATLAB COM组件(.dll文件),这样VB就能识别并使用MATLAB组件了。四、VB中调用MATLAB组件的方法1.
C#与MATLAB函数交互:COM接口实现指南
在现代软件开发中,不同编程语言之间的协作已经变得不可或缺。特别是在科学计算、数据分析以及工程领域,C#作为一种强大的通用编程语言,与MATLAB这一专业数学计算平台的交互日益频繁。本章节旨在对C#与MATLAB跨语言通信进行概览,探究它们之间的交互方式,并为后续章节的深入学习打下基础。C#与MATLAB的跨语言通信通常涉及以下几点:通信机制:了解C#与MATLAB之间进行交互的主要机制,包括但不限于COM技术、Web服务等。应用场景。
VB调用Matlab
接着,在VB项目中引入生成的DLL,就像使用任何其他.NET类库一样。2. **MATLAB Engine for .NET**:这是另一种直接调用MATLAB的方法,无需编译MATLAB代码。
基于COM的Matlab混合编程技术常见问题分析.pdf
;最后,通过.NET生成器(或之前的COM生成器)将Matlab编写的.m文件编译成.dll动态库文件,供VC、VB调用,从而实现混合编程。
提高matlab运行速度
#### 二、COM组件与外部编译:高级加速技巧除了基本的代码优化外,MATLAB还提供了与其他编程环境交互的能力,通过COM组件技术,可以实现与VB、C# .NET、VC等外部程序的集成,进一步提升程序性能


