我不确定如何标题这个问题所以如果您认为标题可以改进,请随时编辑。
所以,我通常不会在vb.net中编码,但这次作为学校作业,我需要这样做。 它是关于使用System.Reflection.Assembly调用一组6个dll。我已经设法使用以下代码:
For Each dll As String In loadedDLLs
Dim newAssembly As System.Reflection.Assembly =
System.Reflection.Assembly.LoadFrom(dll)
For Each dat As System.Type In newAssembly.GetExportedTypes
Dim x As Object = Activator.CreateInstance(dat)
Dim args() As [Object] = {}
dat.InvokeMember("init", System.Reflection.BindingFlags.InvokeMethod, Nothing, x, args)
Next
Next
在上面的代码中,dll是来自dll文件的路径,我在OpenFileDialog
我需要做的是将它添加到DataGridView,并使用相关的系统使用标准更新每个Timer.Tick间隔的网格。现在我发现了一个非常有用的帖子,在代码的另一部分允许我监视.exe文件的执行,这里是链接:http://msdn.microsoft.com/en-us/library/vstudio/system.diagnostics.process.privatememorysize64(v=vs.110).aspx
有谁能请我指点监控dll性能的方向?代码snipet或链接会很棒。
非常感谢!
答案 0 :(得分:0)
我会做以下事情,虽然可能有更好的方法:
创建一个简单的exe,它将dll的路径作为参数。
在你的监视应用程序中调用exe作为新进程(Diagnositc.Process)传递dll路径。
然后,您可以从流程对象中获取各种信息,例如内存使用情况。
我还会考虑记录过程的开始和结束时间来计算所花费的时间。
您可能遇到的主要问题是init方法可能在您读取内存使用量之前完成,因此可能会查看峰值内存使用情况属性。