线程几乎是所有项目或多或少都在用的一种技术手段了,在WPF项目中更是用的只会多不会少的。所以通过WPF的世界来介绍下线程。学习过《计算机操作系统》的基本很容易去理解线程和同/异步有多么的重要,进程、线程和同/异步的出现是让我们的计算机有这么大发展的基础之一。WPF的多线程和window窗体中的多线程基本一样,只是实现的细节和底层支持有点不一样。
我们的程序通常会执行很多的任务,在我们没处理的正常情况下任务都是同步进行的,也就是说在这个应用程序中一次只能执行一个任务,当这个任务执行结束了,才会去执行下一个任务。在这种情况下,长时间的占用就意味着长时间的等待,这个叫做线程阻塞,不仅很影响用户体验,拖累性能,更严重的还让人误以为程序死了。
为了避免线程阻塞,牛逼的前辈这时候就创造了后台线程,并且允许异步操作这种技术出来了。是的,多线程和同步、异步不是一个事。当后台线程完成自己的任务后,它是可以通知到程序的,这个时候程序会接着做自己事,这个叫做“线程同步”。是不是有点绕,我说明下,就像物理一样,同步异步只是参照物不同,AB任务是并列执行的异步操作,AC也许是同步执行的操作。
正常情况下WPF的对象只属于创建它的线程,而不会被其它线程所直接访问。就是说你一个后台线程是不能去访问主线程的用户界面的所有对象&#