winform多线程,winform和wpf的区别
- 开发语言
- 2023-09-20
- 106
大家好,关于winform多线程很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于winform和wpf的区别的知识点,相信应该可以解决大家的一些困惑和问...
大家好,关于winform多线程很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于winform和wpf的区别的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
Winform和WPF的区别和WPF具体用法
WPF将Windows表示层发展至用声明式语言进行开发,并且融入大量的动画和特效,使得在Win32中极难做到的富客户端应用能在WPF中信手拈来,同时用矢量图取代位图,引入路由事件(RoutedEvent)对元素树进行多层监听,通过依赖属性(DependencyProperty)动态变更控件树等。在WinForm程序开发时,一旦涉及多线程操作,我们一般不可能没有见过InvalidOperationException这个异常。这个异常的出现多数情况是由于worker线程(子线程)修改主线程控件(或对象)的属性而导致的非法操作,当然这种做法也非每次都会失败,这主要取决于子线程想要操作的对象是不是线程安全的。WinForm控件提供了InvokeRequired属性来判断当前线程是不是创建此控件的线程。一旦控件创建完成,那么InvokeRequired的效率将会不错,且也能保证安全。不过若是目标控件尚未被创建(此时,虽然C#对象已经存在,不过其底层的窗口句柄仍旧为null),那么InvokeRequired则可能会耗费比较长的时间。(它会从下至上遍历整个控件树,直到找到一个可以承载此控件且已经实例化并被创建了的父控件,这种做法可以保证子控件将会与父控件在同一个线程上创建。找到合适的父控件之后,框架即可执行同样的检查,比较当前线程的ID和创建该父控件的线程的ID。)。若是框架无法找到任何一个已创建的父窗体,那么则需要找到一些其他类型的窗体。若在层次体系中无法找到可用的窗体,那么框架将开始寻找暂存窗体(parkingwindow),暂存窗体让你不会被某些Win32API奇怪的行为所干扰。简而言之,有些对窗体的修改(例如修改某些样式)需要销毁并重新创建该窗体。暂存窗体就是用来在父窗体被销毁并重新创建的过程中用来临时保存其中的控件的。在这段时间内,UI线程仅运行于暂存窗体中。通常,WPF应用程序从两个线程开始:一个用于处理呈现,一个用于管理UI。呈现线程有效地隐藏在后台运行,而UI线程则接收输入、处理事件、绘制屏幕以及运行应用程序代码。WPF为WindowsPresentationFoundation的缩写,其原来代号为“Avalon”,因“我佩服”拼音首字母组合一样,国内有人调侃地称之为“我佩服”。WPF是微软新一代图形系统,运行在.NETFramework3.0架构下,为用户界面、2D/3D图形、文档和媒体提供了统一的描述和操作方法。基于DirectX9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得益于WPF。程序员在WPF的帮助下,要开发出媲美Mac程序的酷炫界面已不再是遥不可及的奢望。WPF相对于Windows客户端的开发来说,向前跨出了巨大的一步,它提供了超丰富的.NETUI框架,集成了矢量图形,丰富的流动文字支持flowtextsupport,3D视觉效果和强大无比的控件模型框架。
如何得到线程执行完之后返回的结果
这个问题有点奇怪。。。一般情况需要用线程的话都是异步的,如果是需要等待返回值做处理的情况大部分都是同步的不需要用到多线程(除非是响应式,即线程执行完了,然后促发某个方法来处理某个结果),这种情况的话最好是单独设置一个静态变量来记录这个值,不是用返回值这种概念来做的。。。。。
这个情况用线程做需要处理很多东西,要监听线程的执行情况,或者注册一个事件,线程执行完了促发这个事件,再用事件响应函数来处理结果,不知道你是不是确定这种需求。
如果是winform程序的话就很简单了,直接用backgroundworkder(托管式的后台线程,由系统自动分配线程池中的线程进行异步处理,可以看做多线程的一种解决方案)这个控件就好了。。。直接有异步执行方法和结果事件监听。
WPF与WinForm开发有什么区别
区别在于特点不同,WPF对于3D的处理更好,画面也更加酷炫。采用最新的工艺设计元素,WinForm开发优良的兼容环境还是让人感到十分惬意。
线条也有所调整,整体看上去要更具高属性。具备极富竞争力的设计。
好了,文章到此结束,希望可以帮助到大家。
本文链接:http://xinin56.com/kaifa/28510.html