【问题标题】:Monitor System.Reflection.Assembly dynamically loaded dll监控 System.Reflection.Assembly 动态加载的 dll
【发布时间】:2014-05-18 09:47:33
【问题描述】:

我不确定如何为这个问题命名,所以如果您认为标题可以改进,请随时编辑。

所以,我通常不在 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“加载”的每个dll执行“init”方法

我需要做的是将它添加到 DataGridView,并在每个 Timer.Tick 间隔使用相关的系统使用统计信息更新网格。现在我发现了一个非常有用的帖子,在另一段代码中可以让我监控 .exe 文件的执行,这是链接:http://msdn.microsoft.com/en-us/library/vstudio/system.diagnostics.process.privatememorysize64(v=vs.110).aspx

谁能指出我监控 dll 性能的正确方向?代码片段或链接会很棒。

非常感谢!

【问题讨论】:

    标签: .net vb.net dll reflection monitor


    【解决方案1】:

    尽管可能有更好的方法,但我会执行以下操作:

    创建一个简单的 exe,将 dll 的路径作为参数。

    在您的监控应用程序中调用该 exe 作为一个新进程 (Diagnositc.Process),将 dll 路径传入。

    然后您可以从进程对象中获取各种信息,例如内存使用情况。

    我也会考虑记录进程的开始和结束时间来计算所用的时间。

    您可能遇到的主要问题是 init 方法可能会在您读取内存使用情况之前完成,因此请查看峰值内存使用属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      相关资源
      最近更新 更多