国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Silverlight 5 項目使用async/await

開發 后端
看上面的代碼,做Silverlight 開發的可真傷不起啊,Silverlight 閹割了所有的同步方法,只能做異步查詢,本來是可以放在后臺線程中模擬同步的......

.Net 4.5 提供了 async/await 讓異步編程回歸同步, 不過,async/await 不是只能在 .Net 4.5 下才能使用, 通過使用 Async Targeting Pack 就可以在 .Net 4.0 以及 Silverlight 5 項目中使用 async/await。

先來看一段 Silverlight 代碼, 不使用 async/await 時是這樣子的:

  1. private void DistanceTestButtonClick(object sender, RoutedEventArgs routedEventArgs) {   
  2.    // 假設這是用戶輸入的坐標   
  3.    var point1 = GeometryUtil.CreateMapPointWgs84(113.3, 23.07);   
  4.    // 假設用戶輸入目的地坐標   
  5.    var point2 = GeometryUtil.CreateMapPointWgs84(110.3, 20);   
  6.    // 全局地圖控件   
  7.    var map = App.ObjContainer.Resolve(typeof(Map));   
  8.    // 從當前 UI 上下文創建 TaskScheduler   
  9.    var uiContext = TaskScheduler.FromCurrentSynchronizationContext();   
  10.    // 創建三個幾何服務   
  11.    var geoSvc1 = GeoFactory.CreateGeometryService();   
  12.    var geoSvc2 = GeoFactory.CreateGeometryService();   
  13.    var geoSvc3 = GeoFactory.CreateGeometryService();   
  14.    // 將用戶輸入的坐標投影為地圖的坐標系坐標   
  15.    var task1 = geoSvc1.ProjectPointAsync(point1, map.SpatialReference);   
  16.    task1.ContinueWith(t1 => {   
  17.       point1 = task1.Result;   
  18.       // 目的地坐標投影為地圖坐標   
  19.       var task2 = geoSvc2.ProjectPointAsync(point2, map.SpatialReference);   
  20.       task2.ContinueWith(t2 => {   
  21.          point2 = task2.Result;   
  22.          var buffParam = this.CreateBufferParameters(point2);   
  23.          var buffTask = geoSvc3.BufferTaskAsync(buffParam);   
  24.          // 做一次緩沖查詢   
  25.          buffTask.ContinueWith(t3 => {   
  26.             var buffGeometry = buffTask.Result.First();   
  27.             var disParam = new DistanceParameters {   
  28.                DistanceUnit = LinearUnit.Meter,   
  29.                Geodesic = true 
  30.             };   
  31.             // 求距離   
  32.             var disTask1 = geoSvc1.DistanceTaskAsync(point1, point2, disParam);   
  33.             disTask1.ContinueWith(t4 => {   
  34.                var disTask2 = geoSvc2.DistanceTaskAsync(point1, buffGeometry.Geometry, disParam);   
  35.                disTask2.ContinueWith(t5 => {   
  36.                   //***求得最終距離   
  37.                   var dis1 = disTask1.Result;   
  38.                   var dis2 = disTask2.Result;   
  39.                }, uiContext);   
  40.             }, uiContext);   
  41.          }, uiContext);   
  42.       }, uiContext);   
  43.    }, uiContext);   

看上面的代碼,做Silverlight 開發的可真傷不起啊,Silverlight 閹割了所有的同步方法,只能做異步查詢,本來是可以放在后臺線程中模擬同步的,可偏偏 ArcGIS 提供的 Silverlight API 在回調函數中創建了 UI 元素以及 DepedencyObject ,想放到后臺線程中計算也不行,真是悲劇。

下面就請出 Async Targeting Pack 來拯救一下吧, 打開 NuGet 管理器, 輸入 await 查詢, 找到 Async Targeting Pack for Visual Studio 11 , 然后下載并添加引用到 Silverlight 項目, 開始用 async/await 改造上面的代碼, 最終的結果如下, 看看是不是清爽了好多呢?

  1. async private void DistanceTestButtonClick(object sender, RoutedEventArgs routedEventArgs) {   
  2.     var point1 = GeometryUtil.CreateMapPointWgs84(113.3, 23.07);   
  3.     var point2 = GeometryUtil.CreateMapPointWgs84(110.3, 20);   
  4.     var map = App.ObjContainer.Resolve(typeof(Map));   
  5.     var geoSvc1 = GeoFactory.CreateGeometryService();   
  6.     var geoSvc2 = GeoFactory.CreateGeometryService();   
  7.     var geoSvc3 = GeoFactory.CreateGeometryService();   
  8.     point1 = await geoSvc1.ProjectGeometryAsync(point1, map.SpatialReference) as MapPoint;   
  9.     point2 = await geoSvc2.ProjectGeometryAsync(point2, map.SpatialReference) as MapPoint;   
  10.     
  11.     var buffParam = this.CreateBufferParameters(point2);   
  12.     var buffGeometry = (await geoSvc3.BufferTaskAsync(buffParam)).First();   
  13.     
  14.     var disParam = new DistanceParameters {   
  15.         DistanceUnit = LinearUnit.Meter,   
  16.         Geodesic = true 
  17.     };   
  18.     var dist1 = await geoSvc1.DistanceTaskAsync(point1, point2, disParam);   
  19.     var dist2 = await geoSvc2.DistanceTaskAsync(point1, buffGeometry.Geometry, disParam);   
  20.     var d = dist2 - dist1;   

這樣編譯出來的 xap 包只是多了一個 dll, 依然可以在 Silverlight5 下運行, 客戶端不需要安裝任何軟件。

大家趕快升級 VS2012 吧, 異步編程回歸同步了!

原文鏈接:http://www.cnblogs.com/beginor/archive/2012/07/21/2602838.html

【編輯推薦】

  1. silverlight仿“百度文庫”的文檔控件
  2. 基于silverlight一個“樹形結構圖”控件
  3. Silverlight開發頁面需要5分鐘到0分鐘蛻變
  4. 游戲人生Silverlight:貪吃蛇
  5. 游戲人生Silverlight:星際競技場
責任編輯:張偉 來源: 張志敏的博客
相關推薦

2022-06-16 10:37:09

asyncawait

2014-07-15 10:31:07

asyncawait

2016-11-22 11:08:34

asyncjavascript

2020-03-11 09:15:25

微信asyncawait

2023-10-08 10:21:11

JavaScriptAsync

2021-07-20 10:26:12

JavaScriptasyncawait

2022-08-27 13:49:36

ES7promiseresolve

2023-07-28 07:31:52

JavaScriptasyncawait

2021-06-28 07:27:43

AwaitAsync語法

2024-12-30 08:22:35

2024-12-23 08:00:45

2023-04-14 08:10:59

asyncawait

2021-06-15 05:36:45

Gulpawaitasync

2022-06-13 07:36:47

useEffectHooks

2017-04-10 15:57:10

AsyncAwaitPromise

2014-07-15 10:08:42

異步編程In .NET

2017-08-02 14:17:08

前端asyncawait

2022-11-21 09:01:00

Swift并發結構

2021-06-28 08:10:59

JavaScript異步編程

2024-09-02 14:12:56

點贊
收藏

51CTO技術棧公眾號

国产精品入口免费视| 九九精品视频在线| 97xxxxx| 欧美视频二区| 亚洲性线免费观看视频成熟| 在线视频尤物| 精品在线观看视频| 91久久伊人青青碰碰婷婷| 欧洲一区在线| 日韩精品在线第一页| 日韩一区二区三区中文字幕| 中文字幕不卡一区| 国产91porn| 日本一不卡视频| 国产伦视频一区二区三区| 国产成人精品一区二区免费看京| 在线视频中文亚洲| 国产盗摄精品一区二区酒店| 色香蕉成人二区免费| 全部a∨一极品视觉盛宴| 久久精品一二三| 丁香花在线影院观看在线播放| 国产视频亚洲| 91免费看网站| 人人狠狠综合久久亚洲婷| 欧美二区在线播放| 欧美日韩国产v| 亚洲激情小视频| 老司机午夜在线| 色www精品视频在线观看| 麻豆免费网站| 欧美国产一区在线| 六月丁香婷婷在线| 不卡影院免费观看| 91午夜在线观看| 成人精品国产福利| 国产h视频在线播放| 国产成人亚洲精品青草天美| 久久国产精品免费观看| 精品亚洲成a人| 亚洲天堂第一区| 国产福利一区二区三区视频在线| 欧美xxxx吸乳| 成人v精品蜜桃久久一区| 福利在线一区二区| 国产成人av电影在线播放| 久久99久久99精品| 99精品久久久久久| 999在线免费视频| 中文一区在线播放| 黄色一级视频网站| 亚洲国产精品精华液网站| 亚洲伦理在线| 91福利在线看| 少女频道在线观看免费播放电视剧| 精品国内二区三区| 欧洲亚洲两性| 欧美黑人巨大精品一区二区| 夜夜躁狠狠躁日日躁2021日韩| 国产精品成人免费电影| 欧美电影《轻佻寡妇》| 精品乱码一区| 国产精品一区二区在线观看网站 | 在线成人午夜影院| 羞羞的网站在线观看| 亚洲免费视频一区二区| 国产精品三p一区二区| 欧美在线性视频| 欧美日韩p片| 亚洲7777| 欧美激情一区二区三区全黄| 李宗瑞系列合集久久| 欧美丰满高潮xxxx喷水动漫| 综合久久2023| 国产成+人+综合+亚洲欧美丁香花| 午夜久久影院| 警花观音坐莲激情销魂小说| 一区在线观看免费| 中国日本在线视频中文字幕| 国产亚洲欧洲在线| 成人情趣视频| 男女爱爱视频网站| 亚洲柠檬福利资源导航| 黄色在线观看网站| 久久精品国产96久久久香蕉| 国产精品99久久精品| 超碰97免费观看| 亚洲另类在线制服丝袜| 午夜av在线免费观看| 久久免费观看视频| 久色成人在线| 国产美女在线免费观看| 日韩一区二区免费在线电影| 色妞ww精品视频7777| 国产精品伊人日日| 国产高清精品在线| 邻家有女韩剧在线观看国语| 在线亚洲男人天堂| 激情久久久久| 亚洲另类第一页| 亚洲国产精品久久久久秋霞不卡| 日韩av网址大全| 自拍偷拍亚洲色图欧美| 午夜精品一区二区三区三上悠亚| 在线观看网站免费入口在线观看国内 | 欧美大片免费观看网址| 国产成人精品一区二区| 奇米精品一区二区三区在线观看| 五月天av在线播放| 日韩精品视频在线观看免费| 国产精品一线天粉嫩av| 久久综合亚洲精品| 欧美在线观看视频一区二区三区| 91欧美日韩在线| 视频一区在线免费观看| 亚洲成年人影院| 国产一区一区| 亚洲欧美日韩国产成人综合一二三区| 亚洲自拍另类综合| 91久久青草| av动漫免费观看| 色欧美日韩亚洲| 欧美日韩一区二区三区在线电影| 亚洲av首页在线| 欧美视频日韩视频在线观看| 加勒比中文字幕精品| 国产精品69久久久| 日韩电视剧在线观看免费网站 | 日韩成人av网址| 久久在线视频| 久草福利视频在线| 伊人久久久久久久久久久久久 | 亚洲久久中文字幕| 亚洲欧美中文在线视频| 国产精品九九| 有色激情视频免费在线| 欧美精品在线免费播放| 免费精品视频在线| 免费在线你懂的| av电影成人| 欧美日韩亚洲激情| 欧美美女视频| 黄色免费影视| 91av国产在线| 国产欧美日本一区二区三区| www.久久99| 亚洲美免无码中文字幕在线| 亚洲网站在线看| 国产精品正在播放| 超碰超碰人人人人精品| 日韩精品极品视频在线观看免费| 在线观看一区二区视频| 欧美h版在线| 天堂中文av| 国产精品久久久久免费a∨大胸| 中文字幕一区二区视频| 99re91这里只有精品| 欧美三级午夜理伦三级富婆| 久久久久免费视频| 中文字幕一区二区三中文字幕| 韩国女主播一区二区三区| 亚洲最大成人在线观看| 午夜免费久久久久| 亚洲三级视频在线观看| 精品美女视频| 黄色免费在线播放| 国产伦精品一区二区| 欧美色综合网站| 美女诱惑黄网站一区| 丰满的护士2在线观看高清| 在线成人性视频| 最新国产精品亚洲| 欧美激情资源网| 精品国产成人| 亚乱亚乱亚洲乱妇| 国产又粗又大又爽的视频| 久久影院在线观看| 自拍偷拍国产亚洲| 一区二区三区在线电影| 欧美成人hd| 4444亚洲人成无码网在线观看| 免费不卡欧美自拍视频| 亚洲精品中文在线| 国产主播精品| 性欧美高清come| 国产九九九九九| 国产精品99导航| 69久久夜色精品国产69蝌蚪网| 久久草av在线| 国产精品久久久久久久久久白浆 | 色爱综合网站| 成人av在线天堂| 91精品国产91久久久久久最新毛片| 国内精品视频一区二区三区八戒| 96视频在线观看欧美| 国产美女极品在线| 亚洲 日韩 国产第一区| 久久久久久有精品国产| 在线不卡一区二区| 国产日韩欧美制服另类|