如何显示正在加载的模块(DLL)的名称?

Welkin-Hu 2004-11-13 09:56:46
在Visual Studio.net中调试程序时,输出窗口中能显示出“正在加载 ……”信息,说明正在加载和已经加载的模块。通常是一些DLL文件。请问这个效果如何实现?

我对这个进行了初步研究,没有找到解决方法。

Assembly类中有个GetLoadedModules,可以获取作为此程序集的一部分的所有加载模块。
如果设置每隔一段时间(如0.5秒)调用一下这个方法,就可以知道有哪些模块加载了。
在使用这个方法时,我碰到两个问题:
1、经简单测试,发现GetLoadedModules只能得到程序集自身。不能得到其它引用并加载的模块,如System.Data等。
2、设置每隔一段时间调用一次感觉太费资源了。有没有一种事件机制可以实现呢?

在CSDN中搜过,最相近的帖子是:
http://community.csdn.net/Expert/topic/3327/3327735.xml?temp=.409878
象PHOTOSHOP等软件的动态加载效果(有些长,内附源代码下载地址)
这个帖子的方法如下:
dlg.Caption = "正在加载A数据。。。。。";//通知启动窗体我要加载数据库A了
this.sqlDataAdapter1.Fill(this.dataSet11);
dlg.Caption = "正在加载B数据。。。。。";//通知启动窗体我要加载数据库B了
this.sqlDataAdapter2.Fill(this.dataSet11);

这种在加载数据的代码前显式的来一句“正在加载……数据”的方法不能解决我的问题。





...全文
120 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Welkin-Hu 2004-11-16
  • 打赏
  • 举报
回复
OneDotRed的方法非常好!我已经很好的实现了这个功能。

原来基本上是一个DLL对应一个程序集。
之前我对模块和程序集的划分有误解。认为一个DLL可能是一个模块。

根据OneDotRed的方法,能够很好的动态显示正在加载的DLL。
trnbo 2004-11-13
  • 打赏
  • 举报
回复
估计是用反射。GZ一下
OneDotRed 2004-11-13
  • 打赏
  • 举报
回复
class EntryPoint
{
static void Main(string[] args)
{
AppDomain domain = AppDomain.CurrentDomain;
domain.AssemblyLoad += new AssemblyLoadEventHandler(domain_AssemblyLoad);
SQLHelper helper = new SQLHelper("SELECT * FROM Customers");
Console.Read();
}

static void domain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
{
Console.WriteLine(args.LoadedAssembly.FullName);
}
}

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧