成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WPF線程渲染相關疑難問題解答

開發 開發工具
WPF線程渲染在開發人員使用的時候,會出現許多種問題。我們在這里就為大家總結了一些問題的解決經驗,希望對大家有所幫助。

WPF開發工具為我們帶來了一個新的開發環境。在解決圖形界面顯示方面起到了很大的作用,可以方便的使我們開發出與MAC一樣的圖形界面。#t#

 

今天又看到了WPF線程渲染的問題,之所以存在UI線程問題,其實還是在線程模型上來說,直接對另一個線程的操作會帶來隱患,比方說,UI線程正在渲染A,我們直接操作A的數據會導致渲染的結果和實際數據不一致,說通俗點兒,就是界面上我們看到的數據并不是實際的數據(寒~~我說得都有點兒暈了!)之前,我寫過文章,講述了幾個如何修改UI數據從其他線程,但是,畢竟是從技巧層面上去遷就,始終感覺有些不妥,籍著重構代碼時的思路,就在這里感慨一下。

其實,徹底解決WPF線程渲染這個問題并不困難,首先要理清自己系統中各個層和各個模塊的分工,讓我們回憶一下,SOA面向服務的架構優越性不言而喻,實現的困難關鍵在于如何去實現一個企業總線,而這個企業總線的思路,其實就是把數據的使用和數據的操作做個分離。在傳統的三層架構,我們通常分為表現層、邏輯層、數據層,表現層來存儲數據,邏輯層來控制業務邏輯,數據層來存儲管理數據。

如果,我們的設計能夠如此清晰,我們就不會存在需要在表現層里使用的數據在邏輯層或數據層里修改,為什么呢?因為,層和層之間不能存在耦合,否則就失去了分層的意義和價值,例如:表現層需要展示產品A的信息,向邏輯層要產品A的數據,產品A的數據被邏輯層過濾選擇之后傳遞出來,傳遞的是值而不是一個引用,這一點非常重要!!

如果傳遞的是引用會怎么樣呢?傳遞引用會造成數據只能由生成該實例的線程進行操作,否則,存在跨線程操作的安全問題,例如UI線程生成實例,無法在邏輯層線程中修改,而邏輯層線程生成的數據實例也同樣無法在UI線程中進行修改,回歸了我們的題目:”徹底解決UI跨線程操作問題

“我們之所以會從邏輯層參會數據引用而不返回一個數據的拷貝(值類型拷貝),最主要的原因是我們被數據綁定迷惑了,我們太依賴于數據綁定帶來的好處,但是,使用的思路差異會帶來本質的不同。如果,我們把數據綁定只是在表現層中使用,而不是為了方便,把來自于邏輯層的數據結構引用綁定到表現層,在表現層綁定顯示之后,如果不是Once綁定,數據在任何時候發生的改變都會自動呈現在界面上。

事實并非如此!!!我們只是一廂情愿而已,上述的情況只是一種理想的假設,而這個理想的假設帶來了UI跨線程操作的問題。回想一下,我們當初開發Win32應用程序時,我們會給界面中一個控件的Text屬性賦值,但是我們會在后臺線程中操作這個Text屬性,我們希望數據的改變被呈現在界面中,但卻因為跨線程操作而出錯,這時候,正確的操作應該是,UI線程在輪詢或監聽一個后臺線程的時間,一旦數據改變,由UI線程來進行數據的修改,這樣就不會出錯了。

同理,在我們開發Silverlight的時候,我們也帶著這樣的思路,無論是綁定還是任何形式的數據呈現,呈現所在的WPF線程渲染生成數據實例同時管理數據內容,這樣就永遠不會出現跨線程操作的問題,只要在邏輯層稍作修改即可,通過監聽底層數據改變,并把自己當作一個Proxy透傳這些數據改變給UI線程,UI線程來決定什么時候修改數據,問題就徹底解決了。

責任編輯:曹凱 來源: 博客園
相關推薦

2009-12-25 10:59:08

WPF Timer

2011-08-03 13:25:19

布線系統規劃

2011-05-10 14:14:10

OSPF路由

2011-05-10 14:32:19

OSPF路由

2009-12-03 18:09:51

Visual Stud

2010-05-14 10:46:14

2010-10-09 17:19:50

mysql存儲過程

2009-10-27 11:10:56

linux問題解答

2009-10-13 14:56:00

CCNA培訓

2010-07-26 13:05:44

Perl子程序參數

2011-07-13 17:57:15

SQLite

2011-08-09 15:10:00

SQLite

2010-09-13 14:43:47

無線技術常見問題

2023-10-10 08:01:13

2011-10-20 09:57:58

AS400 FTPFTP

2009-07-31 12:16:58

linux無盤系統

2011-04-14 10:46:23

2010-12-27 14:50:16

Windows 部署服

2010-05-12 17:04:20

BlackBerry開

2010-07-28 11:25:08

Flex滾動條
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 不卡视频一区二区三区 | 日韩一区二区在线视频 | 精品国产一区二区三区久久狼黑人 | 九九成人 | 亚洲欧美一区二区三区国产精品 | 男人天堂国产 | 日韩在线成人 | 久久99精品久久久久久琪琪 | 久草视频网站 | 欧美电影一区 | 日韩欧美一区二区三区免费看 | 亚洲第一网站 | 免费看一级毛片 | 成人av鲁丝片一区二区小说 | 一区二区三区国产好 | 一级片在线观看视频 | 精品欧美一区二区三区久久久小说 | 日韩三级视频 | 99热首页 | 在线播放一区二区三区 | 久久综合狠狠综合久久 | 成人一级视频在线观看 | 色橹橹欧美在线观看视频高清 | 国产成人啪免费观看软件 | 激情 婷婷 | aaa在线| 日韩欧美在线观看 | 欧美日韩视频在线第一区 | 国产高清自拍视频在线观看 | 精品视频一区在线 | 欧美激情在线精品一区二区三区 | 国产98色在线 | 国产精久久久久久久 | 羞羞视频一区二区 | 国产电影一区二区三区爱妃记 | 91成人在线| 欧美日韩在线观看一区 | 偷拍自拍第一页 | 狠狠狠色丁香婷婷综合久久五月 | 91精品国产乱码久久久久久久久 | 99久久精品国产一区二区三区 |