1

実際のデバイスでアプリケーションをデバッグしようとしているときに、問題が発生しました。ブレークポイントがトリガーされた後、約 6 秒間待ちます (コードをステップ実行するか、何もしないかに関係なく)、プログラムが終了します。[出力] ウィンドウに次のものが表示されます。

02-22 10:31:42.599 I/mono (32532): スタックトレース:
02-22 10:31:42.599 私/モノ (32532):
プログラム「Mono」はコード 255 (0xff) で終了しました。

2 つの異なるデバイス (ASUS Padfone と HUAWEI C8812、どちらも Android 4.0.4) でデバッグを試みましたが、同じ結果でした。
制限時間内に応答しないため、デバイスがプログラムを終了したようです。でももちろん反応しません!コードをステップ実行しています。

ところで、エミュレータでのデバッグは問題ありません (ただし、SLOOOOW!! そしてあまりにも頻繁にクラッシュします)

私の monodroid のバージョンは 4.4.55 で、Windows 7 (64 ビット) で Visual Studio 2010 SP1 を使用しています。

4

1 に答える 1

0

私は問題を見つけたと思います、ここにいくつかのコード、単純なコードがあります、本当に:

class OwnerDrawView : View
{
    PointF m_screenPosition;

    public OwnerDrawView(Context context)
      : base(context)
    {
      this.Touch += new EventHandler<TouchEventArgs>(OwnerDrawView_Touch);
      this.SetWillNotDraw(false);
    }

    protected override void OnDraw(Canvas canvas)
    {
      Core.Instance.OnDraw(canvas);
      base.OnDraw(canvas);
    }

    void OwnerDrawView_Touch(object sender, View.TouchEventArgs e)
    {
      m_screenPosition = new PointF(e.Event.GetX(), e.Event.GetY());
      switch (e.Event.Action) {
        case MotionEventActions.Down:
            Core.Instance.OnTouchDown(m_screenPosition);
            break;
        case MotionEventActions.Move:
            Core.Instance.OnTouchMove(m_screenPosition);
            break;
        case MotionEventActions.Up:
            Core.Instance.OnTouchUp(m_screenPosition);
            break;
      }
    }
}

「Core」クラスは気にしないでください。ここでは重要ではありません(ただし、^ _ ^のように聞こえます)
。このエラーを再現するには、次の行にブレークポイントを配置します。

Core.Instance.OnTouchDown(m_screenPosition);

デバイスでプログラムを実行し、画面をタッチして、数秒待ってください、ブーム!
ただし、ブレークポイントが「Core.Instance.OnTouchUp(m_screenPosition)」行に配置されている場合は、サプライズ!すべて順調!!なんてこったい!!

私のプログラム全体はシングルスレッドで実行されるので、マルチスレッド関連のものではありません。私はタイマーを持っていますが、そのタイマーは「OwnerDrawView」クラスでPostInvalidateを呼び出すだけです(はい!Canvasを使用してゲームを構築しています!)

これはおそらくmonodroidのバグですが、誰かがこのバグを再現するのに問題がある場合は、私を無視してください(私はいつも不運な男です...)

于 2013-02-22T08:23:25.537 に答える