{"id":30,"date":"2010-05-10T08:06:18","date_gmt":"2010-05-10T07:06:18","guid":{"rendered":"http:\/\/ree7.fr\/blog\/?p=30"},"modified":"2015-09-17T11:13:49","modified_gmt":"2015-09-17T10:13:49","slug":"wp7-missing-checkaccess","status":"publish","type":"post","link":"https:\/\/www.ree7.fr\/blog\/2010\/05\/wp7-missing-checkaccess\/","title":{"rendered":"[WP7] Missing CheckAccess()"},"content":{"rendered":"<p>Une petite note technique pour ceux qui se demandaient o\u00f9 \u00e9tait pass\u00e9e Dispatcher.CheckAccess() dans les CTP de Windows Phone 7.<\/p>\n<p>Cette primitive permet de savoir si le code courant tourne dans le thread d&rsquo;UI ou pas, et donc si un BeginInvoke() est n\u00e9cessaire ou pas.<\/p>\n<p>Exemple, pour r\u00e9cup\u00e9rer un setting de l&rsquo;IsolatedStorage depuis n&rsquo;importe quel thread :<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\npublic void GetSetting(string key, out object value)\r\n        {\r\n            if (Deployment.Current.Dispatcher.CheckAccess())\r\n            {\r\n                value = IsolatedStorageSettings.ApplicationSettings&#x5B;key];\r\n            }\r\n            else\r\n            {\r\n                using (ManualResetEvent sync = new ManualResetEvent(false))\r\n                {\r\n                    object _value = null;\r\n\r\n                    Deployment.Current.Dispatcher.BeginInvoke(() =&gt;\r\n                        {\r\n                            _value = IsolatedStorageSettings.ApplicationSettings&#x5B;key];\r\n                            sync.Set();\r\n                        });\r\n\r\n                    sync.WaitOne();\r\n                    value = _value;\r\n                }\r\n            }\r\n        }\r\n<\/pre>\n<p>Et bien CheckAccess() est toujours bien l\u00e0 dans la classe Dispatcher, m\u00eame si l&rsquo;Intellisense de Visual Studio ne vous la propose pas.<\/p>\n<p><strong>Rappel : <\/strong>Pour les d\u00e9butants en multi-threading sous Silverlight, le seul Dispatcher auquel vous avez acc\u00e8s depuis un autre thread que l&rsquo;UI est Deployment.Current.Dispatcher. Si vous essayez de taper directement dans le Dispatcher d&rsquo;un FrameworkElement vous irez tout droit \u00e0 la CrossThreadException ;-).<\/p>\n<p>Source : <a href=\"http:\/\/social.msdn.microsoft.com\/Forums\/en-US\/windowsphone7series\/thread\/59d4b3ff-8944-4b63-a406-ab2011188be6\/?prof=required\">Forums MSDN<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Une petite note technique pour ceux qui se demandaient o\u00f9 \u00e9tait pass\u00e9e Dispatcher.CheckAccess() dans les CTP de Windows Phone 7. Cette primitive permet de savoir si le code courant tourne dans le thread d&rsquo;UI ou pas, et donc si un BeginInvoke() est n\u00e9cessaire ou pas. Exemple, pour r\u00e9cup\u00e9rer un setting de l&rsquo;IsolatedStorage depuis n&rsquo;importe quel [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[1],"tags":[28,23,21,20],"jetpack_publicize_connections":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p19lzH-u","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/posts\/30"}],"collection":[{"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/comments?post=30"}],"version-history":[{"count":0,"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/posts\/30\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/media?parent=30"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/categories?post=30"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/tags?post=30"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}