`
happmaoo
  • 浏览: 4337866 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

调试技术能够让新技术的学习事半功倍

阅读更多
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></iframe>

调试技术能够让新技术的学习事半功倍


我是WPF菜鸟。我要学WPF。

一种方法,是根据推荐的书籍,按照书籍的步骤,从Hello World开始,循序渐进,从event handling, data binding, style, template, graphic, resource等等一路练过来,然后,然后呢?

然后没了。然后可以看看MSDN上深入一点的文档,写个小程序什么的,再然后呢?

再然后就真的没了。

为什么说没了呢。因为接下来不知道做什么了。首先我不知道我是不是学全面了,其次就算我以为我学全面了,我能做个程序了,我也不知道我是用的方法是不是最优的。学一个东西,学到后来觉得没了,那是很让人失望的。

所以我觉得按照上面的方法来学WPF,肯定会让我非常不爽。

那我该怎么学呢?

首先是我为啥要学。导火索是现有的产品无法满足用户日益增长的需要了。日本都用蓝光碟了,说明用户对于视觉感官的渴望是非常强烈的。那WPF真的能满足这个需求么?WPF能发挥GPU的多少硬件特效?功能上支持关键部位打马赛克么?WPF的工作模型跟我现有的数据兼容么?WPF画图是实时的么,我开发游戏用WPF能达到直接用D3D的性能么?WPF出问题后我到什么地方找专家?如何制定性能指标跟其它技术比较?开发平台完善么?...

稍微具体点的问题比如有:

1. WPF支持数据和图像同步吗?比如我的数据源刷新速度比WPF的Render还快的时候,我有办法得知当前的Render状态,以便调整数据的获取速度吗?

2. 如果我的目标程序是一个DCOM Server,我需要在DCOM请求执行的时候通过GUI来显示执行状态。WPF的线程模型跟DCOM Server模型有冲突吗,使用WPF会带来 DCOM的性能下降吗?

3. 当频繁改变UI Tree结构的时候,怎样的做法才能够带来更高的性能,怎样的做法才能够避免UI的抖动呢?

如果手头的项目是非常重要,要花很多钱,上面这些问题往往是决定使用何种技术的关键。但事实情况是,就算我把亚马逊上WPF 4星半以上的书全部看一遍,WPF所有的feature全部学会,也无法回答得到上面问题的答案。

要回答上面的问题,其实需要两点:

1. 明确地知道你需要什么
2. 明确地知道WPF产品本身是如何工作的,而不是知道应该如何使用WPF

所以我重新制定的学习计划如下:

1. 会用WPF写一个hello world,以便做进一步研究的试验品
2. 尽可能多地通过比较深入的文章,比如WPF developer的blog,来了解WPF的实现细节
3. 针对我的需求,分析出WPF对应的实现细节。比如WPF通过怎样的方式把图像画到屏幕上,WPF的线程模型如何通信,WPF通过怎样的顺序传递消息,遍历UI tree,WPF如何优化重复绘图,WPF对Windows消息的依赖等等
4. 根据前三点获取的信息,根据MSDN中的介绍完成一个技术原形,测量该原形的工作是否跟预期相符合,反证前三步获取的信息是否准确
5. 把这些信息进行多方面的反馈和讨论,进一步完善原形,完成进一步的证实和检验
6. 根据前面的信息,决定是否使用WPF进行当前的开发。如果答案是肯定,那去亚马逊随便买本4星半的WPF教科书,快速学习如何使用WPF的各种feature

上面的计划,难点在第三步。除了微软以外,别人没有WPF的源代码,如何才能知道WPF的实现细节呢。如果你有钱,如果你是HP或者Citybank,你可以找微软的顾问,把你的问题交代给顾问,然后顾问会参考WPF的源代码,会跟WPF的developer讨论,最后告诉你WPF某些具体的技术是如何实现的。但是如果你是个人呢,或者你不想花钱,那对不起,你只有自己硬啃了。

这个怎么硬啃呢,自然是需要有技巧地啃了。调试工具在这个时候就会发挥出巨大的作用!

(哪怕手头有WPF的所有代码,其实还是没有调试器+reflector管用。要是不相信,你去打开VS下MFC,ATL和STL的代码,看看能学到多少东西)

下面是我结合调试器学习WPF的步骤。调试技术能够让学习事半功倍。

WPF起步(上) --- WPF是如何把图像画到屏幕上
http://blog.csdn.net/eparg/archive/2007/12/11/1930357.aspx

WPF起步(中) --- 的main thread跟render thread如何通信
http://blog.csdn.net/eparg/archive/2007/12/11/1930363.aspx

WPF起步(下) --- WPF的画图请求是如何生成和派发
http://blog.csdn.net/eparg/archive/2007/12/11/1930368.aspx



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1930560


分享到:
评论

相关推荐

    PCB技术中的新PCB板调试方法和经验总结

    但如果掌握好一套合理的调试方法,调试起来将会事半功倍。对于刚拿回来的新PCB板,我们首先要大概观察一下,板上是否存在问题,例如是否有明显的裂痕,有无短路、开路等现象。如果有必要的话,可以检查一下电源跟...

    PCB技术中的如何安装调试新设计的电路板

    但如果掌握好一套合理的调试方法,调试起来将会事半功倍。对于刚拿回来的新PCB板,我们首先要大概观察一下,板上是否存在问题,例如是否有明显的裂痕,有无短路、开路等现象。如果有必要的话,可以检查一下电源跟...

    PCB技术中的怎样调试一个新设计的电路板?

    但如果掌握好一套合理的调试方法,调试起来将会事半功倍。  对于刚拿回来的新PCB板,我们首先要大概观察一下,板上是否存在问题,例如是否有明显的裂痕,有无短路、开路等现象。如果有必要的话,可以检查一下电源...

    PCB技术中的怎样去调试一个新设计的电路板

    但如果掌握好一套合理的调试方法,调试起来将会事半功倍。对于刚拿回来的新PCB板,我们首先要大概观察一下,板上是否存在问题,例如是否有明显的裂痕,有无短路、开路等现象。如果有必要的话,可以检查一下电源跟...

    PCB技术中的PCB板寻找故障调试的常用三种方法

    但如果掌握好一套合理的调试方法,调试起来将会事半功倍。  对于刚拿回来的新pcb板,我们首先要大概观察一下,板上是否存在问题,例如是否有明显的裂痕,有无短路、开路等现象。如果有必要的话,可以检查一下电源...

    Windows内部原理(十一):存储和文件系统

    如果能够深入了解Windows内存管理机制,那么无论在系统配置还是在故障排错方面,都能让我们直达根源,起到事半功倍的效果。本课程将全面介绍Windows内部内存管理机制,包括寻址原理、进程内存空间分布、核心态用户态...

    WINDOWS 内部原理(十)驱动和硬件的管理

    如果能够深入了解Windows内存管理机制,那么无论在系统配置还是在故障排错方面,都能让我们直达根源,起到事半功倍的效果。本课程将全面介绍Windows内部内存管理机制,包括寻址原理、进程内存空间分布、核心态用户态...

    WINDOWS 内部原理 (八)

    如果能够深入了解Windows内存管理机制,那么无论在系统配置还是在故障排错方面,都能让我们直达根源,起到事半功倍的效果。本课程将全面介绍Windows内部内存管理机制,包括寻址原理、进程内存空间分布、核心态用户态...

    windows 内部原理(一)

    如果能够深入了解Windows内存管理机制,那么无论在系统配置还是在故障排错方面,都能让我们直达根源,起到事半功倍的效果。本课程将全面介绍Windows内部内存管理机制,包括寻址原理、进程内存空间分布、核心态用户态...

    WINDOWS 内部原理(九)

    如果能够深入了解Windows内存管理机制,那么无论在系统配置还是在故障排错方面,都能让我们直达根源,起到事半功倍的效果。本课程将全面介绍Windows内部内存管理机制,包括寻址原理、进程内存空间分布、核心态用户态...

    WINDOWS 内部原理 (三)

    如果能够深入了解Windows内存管理机制,那么无论在系统配置还是在故障排错方面,都能让我们直达根源,起到事半功倍的效果。本课程将全面介绍Windows内部内存管理机制,包括寻址原理、进程内存空间分布、核心态用户态...

    WINDOWS 内部原理(四)

    如果能够深入了解Windows内存管理机制,那么无论在系统配置还是在故障排错方面,都能让我们直达根源,起到事半功倍的效果。本课程将全面介绍Windows内部内存管理机制,包括寻址原理、进程内存空间分布、核心态用户态...

    WINDOWS 内部原理(五)

    如果能够深入了解Windows内存管理机制,那么无论在系统配置还是在故障排错方面,都能让我们直达根源,起到事半功倍的效果。本课程将全面介绍Windows内部内存管理机制,包括寻址原理、进程内存空间分布、核心态用户态...

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    android系统原理及开发要点详解_韩超_梁泉 4

     嵌入式Linux系统学习者:将Android作为一个集Linux核心和应用层程序于一体的系统进行学习,并可以利用Android的仿真环境运行和调试程序。  读者在学习本书的过程中,应尽量对照本书的框图和手头的Android源代码,...

    自己动手写操作系统(含源代码).part2

    所谓填补空白,具体说就是让像我一样的操作系统爱好者在读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码,有能力从零开始自己动手写操作系统,而这个任务第一版已经完成了。 那么为什么我又写作了第...

    自己动手写操作系统(含源代码).part1

    所谓填补空白,具体说就是让像我一样的操作系统爱好者在读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码,有能力从零开始自己动手写操作系统,而这个任务第一版已经完成了。 那么为什么我又写作了第...

    柯尼卡美能达 Bizhub7521 驱动

    3、培训资料:柯尼卡美能达厂家提供给经销商公司技术人员的学习培训手册,主要是讲解此系列复印机的特点、安装、调试、维修重点及常见故障修复。(通过此培训资料,我们可以轻松掌握此系列机型的特点、调整、通病等...

    c语言编写单片机技巧

    所以作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。 4. 当开发一个较复杂而又开发时间短的项目时,用C还是用汇编开发好? 答:对于复杂而开发时间紧的项目时,...

Global site tag (gtag.js) - Google Analytics