Upload
yu-wakabayashi
View
7.674
Download
14
Embed Size (px)
DESCRIPTION
Silverlightを囲む会in東京#6 http://silverlightsquare.com/index.php/tokyo06.html のセッション資料
Citation preview
2012/3/31
若林悠
@wakabayashiyu
http://www.project0884.com/
Silverlight 4 → 5
における不具合の状況
本セッションでは、クライアント環境にインストールされたSilverlightの
バージョンが4 → 5になることで、Silverlightの持つ不具合がどのように
変わるのかを見ていきます。
※注
本セッションで発表した現象は、複数台の端末で確認を行っていますが、それ
以上の確認(各環境の設定等に依存するかどうか etc.)はできておりません。
そのため、あくまで事例の1つとして捉えていただきたいと思います。
Silverlight 4 → 5 で
• 解消された不具合
• 解消されていない不具合
• 新たに発生した不具合
Agenda
Silverlight 4 → 5 で解消された不具合
• Mac OS X Lion(10.7)上
• Silverlight 4 がインストールされている
上記の条件下で日本語や中国語の表示をすることができない。
Silverlight 4 → 5 で解消された不具合 1
※以下のSilverlightのバージョンで確認
実行環境 : 4.1.10111.0
サンプルアプリ : 4
※以下のSilverlightのバージョンで確認
実行環境 : 5.0.61118.0
サンプルアプリ : 4
• Mac OS X Lion(10.7)上
• Silverlight 4 がインストールされている
上記の条件下で特定の全角記号( ☆ ★◇◆※ etc.)を表示させようとすると、
アプリが落ちてしまう。
Silverlight 4 → 5 で解消された不具合 2 ①
※以下のSilverlightのバージョンで確認
実行環境 : 4.1.10111.0
サンプルアプリ : 4
内部的には以下のようなエラーが起きている。
Silverlight 4 → 5 で解消された不具合 2 ②
MS.Internal.WrappedException: [Arg_COMException]
引数:
デバッグ用のリソース文字列は利用できません。キーや引数に関する情報が問題の診断に役立つ場合があります。
http://go.microsoft.com/fwlink/?linkid=106663&Version=4.1.10111.0&File=mscorlib.dll&Key=Arg_COMException を参照
してください。 ---> System.Exception: [Arg_COMException]
引数:
デバッグ用のリソース文字列は利用できません。キーや引数に関する情報が問題の診断に役立つ場合があります。
http://go.microsoft.com/fwlink/?linkid=106663&Version=4.1.10111.0&File=mscorlib.dll&Key=Arg_COMException を参照
してください。
場所 MS.Internal.XcpImports.CheckHResult(UInt32 hr)
場所 MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
場所 System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
場所 System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight,
Single& outWidth, Single& outHeight)
--- 内部例外スタック トレースの終わり ---
Silverlight 4 → 5 で解消されていない不具合
Stringクラスの
「IndexOf」「LastIndexOf」「StartsWith」「EndsWith」各メソッドの処理スピードが
異常に低下する場合がある。
以下の条件下で発生する。
• Mac OS X 上 または Windows XP 上(Macの方が低下が顕著)
• 対象の文字数が多い
(特に対象の文字列にマルチバイト文字が含まれる場合、低下が顕著になる)
• 引数の StringComparison(使用するカルチャ、大文字小文字の区別、並べ替え規則)を省略し
た場合。あるいは値に
「StringComparison .Ordinal」「StringComparison .OrdinalIgnoreCase」
以外を指定した場合
Silverlight 4 → 5 で解消されていない不具合 1 ①
※以下のSilverlightのバージョンで確認
実行環境 : 4.1.10111.0
サンプルアプリ : 4 / 5
回避方法
引数の StringComparison を省略せずに
「StringComparison.Ordinal」
「StringComparison.OrdinalIgnoreCase」
のいずれかを指定すること。
※ただし、Silverlight「3」で作成されたアプリケーションの場合、
StringComparison を省略しても処理スピードの低下は起きない。
(デフォルトが「StringComparison.Ordinal」 になっている模様)
※ 「IndexOf」「LastIndexOf」メソッドで、シークする文字に
string ではなく char を指定する場合は、処理スピードの低下は起きない。
Silverlight 4 → 5 で解消されていない不具合 1 ②
• ブラウザー外実行 (Out -of-Browser)
• 「ブラウザー外実行の設定」でウィンドウスタイルを「罫線なし」か「罫線なし角丸」に設定
したSilverlightアプリを使い、
• Windows上
• マルチディスプレイ環境
• セカンダリモニタ上
上記の条件下で、ウィンドウの最大化
を実行すると、通常であればセカンダリモニタいっぱいにウィンドウが広がるべきところで、
不具合が起きる。
※Silverlight 4 / 5環境で、不具合の内容は異なる(詳細後述)
Silverlight 4 → 5 で解消されていない不具合 2 ①
(プロジェクトのプロパティ)
Silverlight 4 環境の場合
セカンダリモニタの解像度の幅が、プライマリモニタの幅より大きい場合、
ウィンドウがセカンダリからはみ出し、プライマリにかかってしまう。
Silverlight 4 → 5 で解消されていない不具合 2 ②
(サンプルアプリ)
※以下のSilverlightのバージョンで確認
実行環境 : 4.1.10111.0
サンプルアプリ : 4
プライマリモニタ セカンダリモニタ
(ウィンドウ最大化を実行)
Silverlight 5 環境の場合
ウィンドウが画面外に飛んでしまう。
Silverlight 4 → 5 で解消されていない不具合 2 ③
※以下のSilverlightのバージョンで確認
実行環境 : 5.0.61118.0
サンプルアプリ : 4 / 5
(サンプルアプリ)
(ウィンドウ最大化を実行)
Silverlight 4 → 5 で新たに発生した不具合
• Mac OS X 上
• Silverlight 5 がインストールされている環境
で、「System.Windows.Controls.WebBrowser」コントロールを持つ
ブラウザー外実行 (Out -of-Browser)アプリケーションを実行 ※「SL App A」とする
WebBrowserコントロール内に表示させるWebサイト上で、
Silverlightアプリケーションを実行 ※「SL App B」とする
Silverlight 4 → 5 で新たに発生した不具合 1 ①
(SL App A)
(SL App B)
(WebBrowserコントロール)
「SL App B」でHTMLブリッジの、マネージコードからのJavaScript呼び出しができない。
例えば、「SL App B」で
• HtmlPage.Window.GetProperty
• HtmlPage.Window.Invoke
• HtmlPage.Document.GetElementById
• HtmlPage.Document.Cookies
などを実行するとエラーになる。
Silverlight 4 → 5 で新たに発生した不具合 1 ②
※以下のSilverlightのバージョンで確認
実行環境 : 5.0.61118.0
サンプルアプリ : 4 / 5
(「SL App B」で ”HtmlPage.Document.Cookies” を実行)
(SL App B)
ありがとうございました