我想直接显示logmessages。
public void MyMethod()
{
_log.Info("Start of MyMethod");
//.. Do a lot of things
_log.Info("End of MyMethod");
}
我添加了一个日志监听器来显示屏幕上的logmessages。但是如果方法结束,则会显示两个logmessages。是否可以在发生logmessages时直接显示它们。
答案 0 :(得分:0)
这非常复杂,我将尝试解释它为何如此工作。想象一下在后台线程中运行的方法。然后必须将消息分派到UI线程。我们可以通过两种方式发送:
使用Invoke
可能看起来不错,但它会阻止(后台)线程,直到UI线程返回为止。如果UI线程也在等待某事,那么就会出现死锁。
最安全的方法是使用BeginInvoke(Catel使用的)。如果一个监听器支持多线程,它将立即被处理,否则它将被批量刷新以获得性能(例如,文件将以50或100的批量刷新)。