2007/07/28
[gadget][nDigiTVProgram]非同期処理化してフリーズ防止
窓の杜 - 【NEWS】Windows Vista用ガジェットパック「nDigiGadgets」v0.11が公開、計16本を収録
http://www.forest.impress.co.jp/article/2006/09/21/ndigigadgets011.html
というガジェットシリーズの中に、nDigiTVProgramという、ライブドアのテレビ番組表RSSを取得して表示するガジェットがあり愛用しています。このガジェットの中でMicrosoft.XMLDOMを同期処理(xml.async = false;)で呼び出しているのですが、たまによくloadメソッド実行時に固まります。やっかいなのはガジェットは一つがフリーズすると全体を巻き込むところですね。非同期化するとこの問題は解消します。で、やり方は、
ローカルの XML ドキュメントをロードする (hPod)
http://hwat.sakura.ne.jp/hpod/200612/22-220000/
に載っています。
asyncプロパティをtrueにし、onreadystatechangeイベントに匿名関数を割り当てます。
... var xml = new ActiveXObject("Microsoft.XMLDOM"); //xml.async = false; xml.async = true; xml.onreadystatechange = function (){ if( xml.readyState == 4 ){ // ロード完了時に、何かする var rdf; ....この中にもともとloadの後にあった処理を移動させる... statustext.title = "次のデータ取得は"+ mindate.getHours() + "時" + mindate.getMinutes() + "分\n今すぐ取得するにはクリック" } } xml.load(uri); } var lastLoadText = ""; ...
てな感じで。
すべて他の方のネタでごめんなさいですー。私もガジェット作成続きしなきゃ・・・
ちなみにこのガジェットの作者さん、MSMVPを受賞されたそうです。おめでとうございますー。
元記事:http://blogs.wankuma.com/mutaguchi/archive/2007/07/28/87488.aspxプライバシーポリシー