- - PR -
.NET Compact 2.0上で
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-01-28 00:25
初めまして。困ったことがあり,お力をお貸しいただければと思い,やって参りました。
.NET Compact 2.0上で開発中のアプリケーション(C#)で,アプリケーションデータ用のフォルダを取得しようとして,次のようなコードを書きました。
これで,コンパイルは通るのですが,実行時に, System.InvalidOperationException はハンドルされませんでした。 Message="InvalidOperationException" StackTrace: 場所 System.Environment.GetFolderPath() at App.Main() というようになってしまいます。 InvalidOperationExceptionについては調べてみて,スレッド間の操作に関する例外らしいということは分かったのですが,上記のようなシンプルなコードで,例外になる理由がどうも分かりません。実際,同じコードが(Compactでなくて).NET 2.0上では問題なく動作しています。 .NET初心者なので,ひどい見落としをしていないか不安ですが,見当つきかねて,質問させていただきました。解決策をご存じの方,ご教授よろしくお願いします。 開発環境はVisual Studio 2005で,Pocket PC 2003 SE エミュレータ上で動かしています。 | ||||||||
|
投稿日時: 2007-01-28 10:28
この場合、スレッド云々は関係ないでしょうね。 InvalidOperationException のヘルプには「オブジェクトの現在の状態に対して無効なメソッド呼び出しが行われた場合にスローされる例外。」とだけあるので、例外の原因はスレッド云々だけに限ったものではありません。
ヘルプに取り立てて記述されていないようですが、単純に、Enviroment.SpecialFolder.ApplicationData が Pocket PC 2003SE でサポートされていないんじゃないでしょうか。 Windows CE は上位の Windows OS とは異なる部分が多いので、そんなもんかなという気がします。 | ||||||||
|
投稿日時: 2007-01-28 17:47
渋木様
回答ありがとうございました。 さっそくためしに他の定数(Enviroment.SpecialFolder.Programs)を渡したところ,問題なく動きました。 ApplicationData自体はCompactでもサポートされる,とドキュメント上でなっているので多分そうなのだと思いますが,「現在のローミング ユーザーのアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ」を返すとのことで,この「ローミングユーザ」というのをよく理解していないことが原因だったように思われます。 とりあえず,"\\Application Data"を直接指定するという方法で当面は満足することにして,さらに確実な方法を探してみようと思います。 たいへん助かりました。ありがとうございました。 |
1