由于用惯了Linux下面的Cron工具,平时在Windows下面工作却总是不适应Task Schedule,于是自己写了一个Cron for Windows。功能已经基本实现,不过可能有一些小bug。思路很简单,利用线程起一个Timer,然后每分钟去检查一下是不是有符合的规则,添加符合则执行crontab最后的command参数。源码托管在https://github.com/wujiwh/Cron,欢迎各位同学批评指正。

《阅读全文》

原文地址:http://blog.jobbole.com/19001/       作者:@敲代码的张洋

此文章的主旨是希望过于专注.NET程序员在做好工作、写好.NET程序的同时,能分拨出一点时间接触一下.NET之外的东西(例如10%-20%的时间),而不是鼓动大家什么都去学最后什么都学不精,更不是说.NET不行或劝大家放弃.NET。恕我愚钝,此主旨在文中表达不够清楚,看评论中很多朋友误解了,特此说明。

另外,本文中的观点并不全部是我个人的想法,相当一部分来自我以前聊过天的某些大牛,他们很多来自微软、百度、腾讯等知名企业,并且很多已经成为技术骨干,我曾经从他们那里受益匪浅,于是我把他们的指教结合自身的经验和理解写成此文。这就是此文的来源。

—————————————–华丽的分割线—————————————–

在给这篇文章起标题的时候,我斟酌了很久,因为我个人是反对使用“.NET程序员”、“C++程序员”或“PHP程序员”这类简单粗暴的方式为程序员做划分的。但是客观确实存在一个现象,就是很多程序员会为自己设置一个无形的界限,将自己与某种语言或平台硬绑定到一起,例如我这里所指的“.NET程序员”。请注意这与“术业有专攻”是不同概念的,有自己专攻的平台或领域这很正常,但是有很多人偏执地将自己与某个语言或平台紧紧捆绑,而忘记了自己首先是一名程序员,然后才使用某种语言,他们偏执于平台并陶醉于自己建立的盒子里,而不愿主动去接触一些盒子外的事物,最终使得自己无法进步。

张洋:写给.NET程序员,不要困在自己建造的盒子里

从我个人的观点看,本文中“.NET程序员”是指具有如下特点的程序员群体:

《阅读全文》

.NET Framework 为我们提供了一个处理控件闪烁的方案-双缓冲,我们可以直接调用它。

  • 首先自己封装一个Windows组件 MyListView.cs,并让它继承自Listview。
  • 在控件中添加打开双缓冲的代码如下:
public MyListView()
{
// 打开控件的双缓冲
SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
}
  • 使用我们封装的MyListview 实例化一个对象,命名为ImageListView, 执行下面的方法来实现异步数据加载
  • private void button1_Click(object sender, EventArgs e)
    {
    	Thread ImageThread = new Thread((ThreadStart)(delegate()
    	{
    		for (int i = 0; i<100000; i++)
    		{
    		// 此处应该警惕值类型装箱造成的"性能陷阱"
    		ImageListView.Invoke((MethodInvoker)delegate()
    		{
    		ImageListView.Items.Add(new ListViewItem(……) );
    		});
    		}
    	}));
    
    	ImageThread.Start();
    }
    

    使用这种方法可以有效的解决加载大量数据的时候造成的界面假死。