Vb.net Net反射:在调用方法之前执行加载程序集中的反射方法。为什么?
当我动态加载一个程序集,然后从中调用一个方法时,我似乎是在调用该程序集的方法中的代码之前从执行的程序集中获取该方法。它似乎不像我预期的那样以串行方式执行。有人能解释一下为什么会发生这种情况吗。下面是一些代码来说明我所看到的,来自some.dll程序集的代码调用了一个名为PerformLookup的方法。为了进行测试,我将一个类似的MessageBox类型的输出和“PerformLookup Time:”作为文本。我最后看到的是:Vb.net Net反射:在调用方法之前执行加载程序集中的反射方法。为什么?,vb.net,reflection,Vb.net,Reflection,当我动态加载一个程序集,然后从中调用一个方法时,我似乎是在调用该程序集的方法中的代码之前从执行的程序集中获取该方法。它似乎不像我预期的那样以串行方式执行。有人能解释一下为什么会发生这种情况吗。下面是一些代码来说明我所看到的,来自some.dll程序集的代码调用了一个名为PerformLookup的方法。为了进行测试,我将一个类似的MessageBox类型的输出和“PerformLookup Time:”作为文本。我最后看到的是: First:“演出时间:40:842” Second:“初始索引时
First:“演出时间:40:842”
Second:“初始索引时间:45:873”
即使调用了StreamReader.Close(),我还是在write方法的末尾添加了一个flush语句。同样的结果。下面是我输入的调试语句的一些输出,以尝试进一步诊断。我有
write(timestamp)
save(file)
write(save success)
write(saved value)
write(timestamp)
write(file create / file modified times)
sleep(5 seconds)
invoke(assembly method)
write(timestamp)
在组装方法中,我有:
write(timestamp)
sleep(5 seconds) //yes, two 5 second sleeps between write and read
read(file)
write(file value)
write(timestamp)
write(file create / file write times)
以下是我从initIndex日志文件中的输出:
17:732
True
A/P
17:732
5/17/2010 11:59:30 AM / 5/18/2010 7:49:17 AM
22:748
下面是汇编类日志文件的输出:
12:670
CASH
17:685
5/17/2010 11:59:30 AM / 5/18/2010 7:41:20 AM
日期时间没有你想象的那么精确,你可能只是看到了不完美。日期时间没有你想象的那么精确,你可能只是看到了不完美。那么你是在将新时间写回文件,然后重新读取它?您是否正在刷新输出流以确保数据已写入文件,而不是缓存以进行延迟写入?因此您正在将新时间写入文件,然后重新读取它?您是否正在刷新输出流以确保数据已写入文件,而不是缓存以进行延迟写入?在实际代码中,我试图从文件中读取值。我更新调用方法中的值,然后在汇编方法中读取它。汇编方法正在从文件中提取上一个值。当我通过汇编类查看文件上的编辑时间戳时,我发现调用方法没有更新它。我更新调用方法中的值,然后在汇编方法中读取它。汇编方法正在从文件中提取上一个值。当我通过Assembly类查看文件上的编辑时间戳时,我看到它没有被调用方法更新。这两个方法是否同时打开了文件?我不这么认为。在保存文件的方法退出之前,有一个StreamReader.Close()调用来关闭文件。然后,在方法返回后,在程序集方法开始之前,有5秒钟的睡眠时间。在组装方法开始时,还有5秒钟的睡眠时间。这两个睡眠都是通过System.Threading.Thread.Sleep()调用完成的。我认为这可能是一个多线程问题,但sleeps似乎也没有同步代码。这可能是我将程序集加载到的上下文的问题吗?这两种方法是否同时打开了文件?我不这么认为。在保存文件的方法退出之前,有一个StreamReader.Close()调用来关闭文件。然后,在方法返回后,在程序集方法开始之前,有5秒钟的睡眠时间。在组装方法开始时,还有5秒钟的睡眠时间。这两个睡眠都是通过System.Threading.Thread.Sleep()调用完成的。我认为这可能是一个多线程问题,但sleeps似乎也没有同步代码。这可能是我正在加载程序集的上下文的问题吗?
12:670
CASH
17:685
5/17/2010 11:59:30 AM / 5/18/2010 7:41:20 AM