勇哥注:
log4net通过配置文件,可以有自己的缓存机制,并且可以设置成支持多线程输出。
另外还有日志级别和日志轮换功能。
输出媒介可以指定文件、数据库等。文件类型可以为ini, log等。
勇哥描述一下:
如下面代码,当循环Task.Factory.StartNew到第9个的时候,会发现要隔约1秒才可以添加第9个,后面的第10,11,12,13,14 都要间格较长时间。
如果你把下面代码中的while死循环去掉,则15个线程瞬间添加完成。
这是什么原因呢?
for (int i = 0; i < 15; i++)
{
var t1 = Task.Factory.StartNew(fun);
taskList.Add(t1);
}
private void fun()
{
OutMsg($"id={Thread.CurrentThread.ManagedThreadId}, 启动时间:{DateTime.Now.ToString("hh:mm:ss:ms")}\n");
Stopwatch sw1 = new Stopwatch();
sw1.Start();
while (true)
{
Thread.Sleep(5);
if (sw1.ElapsedMilliseconds > 4000)
{
sw1.Stop();
OutMsg($"id={Thread.CurrentThread.ManagedThreadId}, 退出时间:{DateTime.Now.ToString("hh:mm:ss:ms")}\n");
break;
}
}
}勇哥今天用vs团队资源管理器“同步”时出现一个不一样的错误。
错误如下:

vs的输出窗口报告的完整信息如下:
勇哥注:
此控件是继承TreeView控件重写的用户组件,主要特点是可以在节点文本右边添加按钮。
按钮本身就是一个Button类,可以设置按钮的显示相关的属性,以及事件等。
这篇文章是关于.Net的反射优化(有效率地使用反射)的技术。
文中有翻译不准确、难以理解的内容可在评论出指点或咨询。
概述
反射(Reflection)是一种非常强大的.Net平台的特性。System.Reflection命名空间下提供了一套丰富的加载和调用程序集和对象的接口,除此之外它还提供了 了运行时动态地检索元数据信息的方法,比如获取属性、字段信息,特性信息等。
使用反射确实可以使开发人员的生活变得轻松,但是应该尽可能少地使用它,换句话说,只在必需的情况下使用它。它在很大程度上影响了程序的性能。以下是几种提升反射效率的方法。
Powered By Z-BlogPHP 1.7.3
Copyright www.skcircle.com Rights Reserved.