Windows 10 Mobile のアプリケーションは起動に20秒以上かかると起動せずに落ちる

Windows 10 Mobile のアプリケーションで起動時にファイル操作を「同期処理」であれこれやっていて結構時間がかかっているのですが、Visual Studio からデバッグ実行している限りでは問題なく動作し、W10M から単体でアプリケーションを起動すると、起動が完了する前に落ちてしまいます。

最初この現象の理由がわからずデバッグ実行での確認もできないので悩んでいました。例外をキャッチしてログを出すようにもしていたのですが、何でもないような処理のところでプログラムが落ち、例外もまったく発生しませんでした。

しかし、何回かやっているうちに気づいたのですが、ログの出力時間を確認したら最初のログの時間と落ちるタイミングの時間の差が20秒であることに気づきました。試しに Task.Delay.Wait で待機させるようにしたらもっと前の処理で落ちることを確認できました。

Windiws Phone 7 か 8 あたりでも、処理に時間がかかって UI? に処理を戻さないとアプリケーションが落ちるという話は聞いたことがあるのですが、このことをしばらく思い出せなくて盲点でした。デバッグ実行では落ちないし、例外も発生しないので気を付けなければいけませんね。

余談ですが、ファイルアクセス処理はファイルがあるかどうかのチェックだけでも1回あたり1秒ぐらいかかるので非同期処理のほうがいいですね。


Outlook カレンダーでアラームが鳴った後しばらくすると勝手にアラームが消える現象を推測する

私の環境ではローカルに Outlook 2013 をインストールし、Microsoft の Outlook カレンダーとローカルの予定表を同期させています。予定を入力し、時間になったらアラームを表示させるように設定すると、アラームウィンドウが表示されるようになっています。

2016-11-06 12_50_09-アクション センター

表示されたアラームは明示的に消すまでは通常残り続けるのですが、何かのタイミングで表示後数十秒程度経過すると勝手にアラームが消えるようになってしまいました。予定表のアラームも「なし」に戻ってしまう現象です。

この現象についていろいろ試してみた結果治ったように見えるので、その原因の発生理由などについて書いてみたいと思うのですが、不具合の再現など細かく検証するのもめんどうだったのでおそらくこうだろうという推測で書きます。

現象

まず、ローカルで予定を作成し、アラームを設定すると、その時間にアラームは表示されるのですが、しばらく経つと勝手に消えます。予定自体は Outlook カレンダーにも同期されていますが、アラームが勝手に消えるとどちらのアラーム設定も「なし」に変わります。

Outlook カレンダー1

クラウド側の Outlook カレンダーで予定を作成し、アラームを設定した場合でも、ローカルで一度アラームは表示されますが、やはり一定時間後に消えてしまいます。この段階では Windows Update かなんかで何らかのバグが出てきたのではないかと思いました。

実はもう一台PCがあった

デスクトップで作業している PC とは別に Hyper-V で常時動かしている PC があり、実はそちらでも Outlook 2013 を常に起動していました (PC-B とする)。PC-B ではメールを見ることはあるのですが、頻繁に使うわけではなく、アラームを消したりするのが面倒なので、Outlook 2013 側でアラームを表示しない設定にしていました。なぜかというと、アラームを消すという動作は PC ごとに行われており、アラームを表示しておくと PC-B のほうにどんどんアラームが溜まっていくからです。

image
Outlook のオプションでアラームを非表示にできる

しかし、この設定は前々から行っていたものであり、PC-B でアラームを非表示にしていたからってほかの PC のアラームには影響はありませんでした。

Microsoft Exchange に変更した影響か

最近メールの送受信が失敗することが多く、ローカル PC 側の Outlook でアカウントを再作成していたりしていたのですが、その際接続方法が変わっているのに気づきました。前まではたしか種類が「Exchange ActiveSync」だったと思いますが、現在接続しようとすると「Microsoft Exchange」になっています。

image

予定表のアラームが勝手に消えるようになったタイミングと、PC-B でアカウントを作り直した時期が近いことを思い出し、もしかしたら Microsoft Exchange に変更したことによってアラームの制御も同期されるようになったのではないかと思います。

実際のところ推測でしかないのですが、PC-B 側でアラームを表示するようにしたところ、勝手にアラームが消えることはなくなりました。アラームが溜まるという問題についてですが、逆に同期されるようになったことにより、特定のPCでアラームが溜まるということはなくなりました。

Outlook カレンダー2

もし、同じような現象に見舞われたのであれば、上記の状態を確認してみるといいかもしれません。


SkyDrive for Windows 同期ツールが何度も再起動する件についての補足

ある特定の環境において SkyDrive for Windows 同期ツールが勝手に再起動を繰り返す現象に悩まされていました。

環境は以下のとおりです。

  • OS:Windows 7 Ultimate SP1 x64
  • メモリ:2.5GB (ただし動的メモリで最大8GBまで拡張可能)
  • 媒体:仮想OS (Hyper-V 3.0 ゲスト)

この件について、Microsoft Answersで「SkyDrive for Windows 同期アプリが何度も再起動する」という表題で質問したところ、Microsoftの回答としては「Hyper-V上のゲストOSではサポートしていない」とのことでした。

質問の件についてはいったんこれで終了したのですが、その後、原因っぽいのを発見しました。

SkyDrive はそのままインストールしていたのですが、フォルダ構成などを作り変えていたらいつの間にか SkyDrive が再起動することなく正常に動作していました。そしてフォルダの再構成として「シンボリックリンク」を使ってフォルダを作成したところ、SkyDrive がまた再起動を繰り返すようになってしまいました。

おそらくこの「シンボリックリンク」がSkyDrive が再起動する原因ではないかと思います。ただ、物理 PC の Windows 8 の環境ではシンボリックリンクでフォルダを作成しても特に再起動していなかったイメージがあったので、「仮想 OS 環境でシンボリックリンクを使う」または「Windows 7 環境でシンボリックリンク」を使うと SkyDrive が異常終了して再起動するのではないかと思います。

まあ、きちんと検証しているわけではないのであくまでも「想定」なんですけどね(^^;)


[XNA] 別々のスレッドで ContentManager を使用して同じコンテンツを同時に読み込もうとすると例外が発生する

ユーザーの操作レスポンスを改善するためにバックグラウンドでコンテンツを読み込む際、複数のスレッドから同時にコンテンツを読み込もうとすると例外が発生します。

例えば以下のようにプログラムを組むと現象を確認できます。

worker = new BackgroundWorker();
worker.DoWork += (sender, args) =>
  {
    texture = Content.Load("Bitmap");
  };
worker.RunWorkerAsync();
texture = Content.Load("Bitmap");

 

例外が発生するか所は実行タイミングによってメインスレッドであるかバックグラウンドであるかはまちまちです。場合によっては例外が発生しない場合もあります。そのため、原因がわかりにくいエラーになりやすいので注意しましょう。

ちなみに Windows Phone 環境では例外のメッセージが「ArgumentException(Value does not fall within the expected range.」となっており解釈しにくいメッセージになっていますが、Windows 環境では「同一のキーを含む項目が既に追加されています。」と表示されます。コンテンツが完全に読み込まれるまではディクショナリに追加されないので、同時に2つ追加しようとして発生するエラーのようですね。


オンラインストレージ リアルタイムファイル同期サービス その2

前回4月に一度書いたのですが、クラウドが流行なせいか新しいオンラインストレージサービスが次々とでき、既存のサービスも改良されていったりととても速いスピードで変化していってます。

今回は新しい物も含めて比較表を書いてみたいと思います。とりあえず条件としては

  • 無料枠
  • ローカルフォルダとオンラインストレージ自動同期
  • 制限がきつくないもの、使いにくいものは除外

であげてみたいと思います。(表が右で切れている場合もあるのでブラウザを拡大してください)

サービス名

SugarSync

Windows Live Mesh 2011

Dropbox

ZumoDrive

Nドライブ

KDrive

ドライビー

登録URL

登録URL

登録URL

登録URL

登録URL

登録URL

登録URL

登録URL

無料登録のストレージ容量

5 GB : 初期容量
500MB×無限? : ユーザー紹介

5 GB : 初期容量

2GB : 初期容量
+250MB×32人 : ユーザー紹介により
+250MB : Dropboxを始める完了後 (誰でも可)
+~640MB : Dropboxキャンペーン完了後 (今だけ?)

1GB : 初期容量
+1GB : Dojo完了後 (誰でも可)
+250MB×20人 : ユーザー紹介により

30 GB : 初期容量

2 GB : 初期容量
+512MB×16人 : ユーザー紹介により

3 GB : 初期容量

無料枠最大容量

無制限

5 GB

約 20GB (時期により変動)

7 GB

30 GB

10 GB

3 GB

有料登録のストレージ容量

30GB ~ 500GB

なし

50GB ~ 100GB

10GB ~ 500GB

なし

30GB ~ 100GB

なし

同期フォルダ指定

・場所自由
・複数指定可
・デフォルトで固定フォルダがひとつ作成される

・場所自由
・複数指定可

・場所自由
・1つのみ指定

・場所自由
・複数指定可
・ドライブレターを一つ消費する

・ドライブレターのみ

・ドライブレターひとつ消費、または指定フォルダ1つのみ

・ドライブレターのみ (WebDAV 使用)

日本語対応

完全対応

完全対応

完全対応

完全対応 (初期表示は英語、一部日本語訳が変)

完全対応

完全対応

完全対応

クライアント管理ツール

あり

あり (ただし、フォルダの一覧を表示、作成などの簡易ツール)

設定ツール

設定ツール

設定ツール

設定ツール

なし

Web 管理ツール

あり

あり (簡易機能)、SkyDrive と併用

あり

あり

あり

あり

あり

制限

       

・最後のログインから3年でファイル削除

 

・90日間無アクセスでファイル自動削除(?)
・1ファイル2GBまで

その他

・スマートフォン対応

・お気に入り, Office テンプレートの設定同期
・オンラインストレージを使用しない PC 間ファイル同期。容量制限なし
・SkyDrive 併用ファイル保管用の 25GB のストレージ枠。
・リモート接続機能

・スマートフォン対応

・スマートフォン対応

・スマートフォン対応

・スマートフォン対応

・スマートフォン対応


N ドライブ Windows 64bit 版対応

2011/8/9 に 64bit 版の Windows に対応していたようですね。N ドライブは容量が多いので魅力的だったのですが、私の環境はほとんど 64bit 環境だったので使うのあきらめていました。容量も 10GB から 30GB へと拡大したのでちょっと使ってみたいと思います。


オンラインストレージ リアルタイムファイル同期サービス

2011年3月11日の東日本大震災のようにパソコンや HDD がすべて津波で流されたなど、いくらローカルでバックアップ体制をとっていてもデータが損失してしまう事態が起こる可能性がでることが否定できない状態になっています。これを機会にデータをオンラインのデータセンターなどにバックアップしておきたいという需要が震災前よりも出てきたのではないかと思います。

とまあ一応前置きとして震災のことについて書きましたが、それ以外の意味合いでも複数のPCでのファイル自動同期はかなり便利なのでこれらのオンラインサービスはどんどん普及すると思います。

2,3年前ぐらいは「Dorpbox」がこのサービスで有名になり持てはやされていましたが、今となっては他にもいろいろなオンラインストレージサービスが立ち上がってきたため、今まで優位に立っていた Dropbox も容量や日本語対応などいくつかの部分で他のサイトよりも若干遅れをとっている状態になったようにも思えます。

そこで今存在するファイル同期オンラインサービスからいくつか試したものがあるので簡単に比較表を載せたいと思います。あまり詳しくまでは調べていないので Windows 限定であることと、日本人なので日本語に対応しているサイトについて載せています。また、1GB など容量が小さいものも省いています。

サービス名

SugerSync

Windows Live (Mesh)

Dropbox

4shared

ZumoDrive

登録 URL 登録 URL 登録 URL 登録 URL 登録 URL 登録 URL
無料登録のストレージ容量 5 GB 5 GB 2 GB 10 GB 1GB ~ 2GB (いくつか手順を踏むことによって 2GB になる)
有料登録のストレージ容量 30GB ~ 500GB なし 50GB ~ 100GB 100GB 10GB ~ 500GB
フォルダ指定
  • 場所自由
  • 複数指定可
  • デフォルトで固定フォルダがひとつ作成される
  • 場所自由
  • 複数指定可
  • 場所自由
  • 1つのみ指定
  • 場所自由
  • 1つのみ指定(複数指定可だが、同じファイルが同期されるだけ)
  • 場所自由
  • 複数指定可
  • ただし Z ドライブなどドライブレターを一つ消費する
日本語対応 完全対応 完全対応 未対応 対応 (Web は一部英語) 完全対応 (初期表示は英語、一部日本語訳が変)
クライアント管理ツール あり あり (ただし、フォルダの一覧を表示、作成などの簡易ツール) 設定ツール あり 設定ツール
Web 管理ツール あり あり (簡易)、SkyDrive と併用 あり あり あり
その他
  • スマートフォン対応
  • お気に入り, Office テンプレートなどの設定同期
  • オンラインストレージを使用しない P2P による PC 間ファイル同期もあり。こちらは容量制限なし
  • SkyDrive 併用であるため、登録すると同期ストレージ枠とは別にファイル保管用の 25GB のストレージ枠が使用可。
    • スマートフォン対応
  • 同期システムはベータバージョン
    • スマートフォン対応
私感 インターフェースとかわかりやすい感じがします。
無料ストレージ枠も大きいのでおすすめかも。
管理インターフェースは簡易的なものしかありませんが、
ファイルをフォルダに入れれば自動的に同期されるのであまり問題なし。
それよりもファイルサイズ無制限で PC 間同期の方が魅力。
同期パフォーマンスがいい。
ただしでかいファイルを同期すると CPU 処理を一時的に持って行かれることも。
使用事例は多い。
Web やクライアントのインターフェースがわかりにくいかも。
容量が大きいのは魅力なのですが…。
以前は 1GB のみで Z ドライブにしか同期できない、
必要なときにしかファイルがダウンロードされないなどがありましたが、
今は他のサービスに引けを取らないぐらいになりました。

私の場合、いままではストレージの同期として Dropbox のみを使っていて、PC 間のファイル同期としてはファイルサイズ制限のない Windows Live Mesh を使っていました。Windows Live Mesh の P2P によるファイル同期は PC が立ち上がってないと同期されないので古いファイルが混在する可能性があるのですが、ひとつ同期用サーバーとして常時立ち上げていれば、ファイル数、ファイルサイズに制限がないファイル同期ができるので今でも主力で使っています。

ひとつひとつのオンラインサービスだと上限 5GB ほどなので足りないように思えるかもしれませんが、複数のサービスで登録すれば数十GBぐらいにはなるかと思います。ただ、ファイルがいろんな場所に点在する可能性があるので、1か所にまとめたいのであれば有料版の使用も考えてもいいかもしれません。まあ Windows Live Mesh のときのようにひとつファイル同期サーバー作ってしまえば無料版だけでもファイルを1か所にまとめることもできたりしますが(^^)