2012-04-03 13 views
3

WP7アプリケーションでStartキーを押した後、すぐにBackキーを押してアプリケーションに戻り、これらのステップを何度も繰り返すと、アプリケーションがクラッシュするそれは予期せず終了し、Backキーを使用して回復することはできません)。これはデバイス(エミュレータでは見られません)で発生し、アプリケーションがシャットダウンする前に10〜15ステップかかります。 状態の保存/復元に関するMicrosoftのガイドラインに従います。さらに、私がそうした方法で試した他のすべてのアプリもクラッシュする。しかし、いくつかのアプリは他のアプリよりもこのようにして殺すのがずっと難しくなっています。このストレステストと実験の間、私はWP7アプリケーションが頻繁に起動/停止されるとクラッシュする

  • XNAゲームは、アプリケーションが保存されます
  • より多くのデータ/回復し、耐性が低いが、それは私のXNAゲームは、保存する必要があり、残念ながら
で純粋なシルバーのアプリよりも小さい抵抗性である傾向があることに気づきました失効中のデータがたくさんあり、クラッシュするのはかなり簡単です。

既知の問題なのか他の問題なのか、誰にも分かりますか? 問題を完全に解消できない場合は、ゲームをより安定させる方法のアドバイスをお待ちしております。問題は、あなたがこれを行うことができますデ/ -Serializationプロセス内に置くことができることを考えに

+0

スタックトレースや例外のようなクラッシュの詳細はありますか? –

+1

デバッガが接続された状態で問題を再現できない場合は、app.xaml.csで未処理の例外ハンドラを見つけ、隔離されたストレージに例外の詳細を書き込み、次に起動時に表示します。 –

+0

私は以前それを見ました。デシリアライズ中(シリアル化がまだ完了していない場合)にクラッシュし、try/catchなどでユーザーコードが実行されないようにします。誰かが解決策を知っていれば素晴らしいだろう – Ku6opr

答えて

1

private IsolatedStorageSettings isosettings = IsolatedStorageSettings.ApplicationSettings; 
    void Application_deactivated() 
    { 
     isosettings.Add("serialization_finished", false);//just add once, 
        //after that use isosettings["serialization_finished"] 
     //DO: save here your code into isostorage 
     isosettings["serialization_finished"] = true; 
    } 
    void Application_activated() 
    { 
     while (!isosettings["serialization_finished"]) 
      Thread.Sleep(500); 
     //DO: read you data from isostorage 
    } 

ですから、事実上のシリアル化プロセスが

終了したかどうかをテストするために、スイッチオン/オフ構築

旧:

ツームストーンは、彼が終了されなければならないTIMELIMIT(10 秒)を持っています。私が推測するところによれば、あなたは彼にあまりにも多くの墓石を与えて、 の1つの時点でアプリケーションの1つのインスタンスが時間内に廃棄指示を完了できません。しかし、それは前提のちょっと前のことです。 より多くを保存するとクラッシュする速度が速くなります。

墓石処理に必要な時間を測定し、データをisolatedstorageに書き込むことでテストできます。 のデータを分析して、廃棄墓石の時間が増加していることを確認すると(最大8-9 秒)、それが時間であると判断できます。一方

、決して必要ではない時間が増加し、 数秒内に留まる場合は、安全に、私がどのようにもう少し安定したアプリケーションを作るための回避策を見つけ

+0

ありがとうございます。私は失活時間を測定し、それが常に約1秒であることを観察したので、蓄積の問題はありません。しかし、(例えば、ゲームデータの一部を保存しないなどにより)この時間が何とか減少すると、ゲームがより安定する。とにかく、それほど多くはありません。 – mbakulin

1

timeproblemなるはずのことを結論付けることができます。実際には、非アクティブ化中にゲームデータを隔離されたストレージに保存することは望ましくありません。ゲームの状態が変更された場合にのみ必要です。私のゲームは起動後に自動的に一時停止するので状態は変わらず、ユーザーがゲームを再開するまでデータを保存する必要はありません。したがって、独立したストレージへのデータの格納は、最初の非アクティブ化のときにのみ発生します。このアプローチは少し助けてくれましたが、それほど多くはありませんでした。スタートキー/バックキーの20回の反復は、それでも下に移動します。

関連する問題