0

やあみんなこれはstackoverflowに関する私の最初の質問です:)それで私の問題に到達するために:私は異なる時間に呼び出したい3つの異なるタイマークラスを持っています:

public class Activity1 : Activity
{
     static public Timer Kundenerz = new Timer();
     static public Timer Kundenerz2 = new Timer();
     static public Timer Kundenerz3 = new Timer();

     protected override void OnCreate (Bundle bundle)
     {
        base.OnCreate (bundle);
        SetContentView (Resource.Layout.Main);
        Kundenerz.Interval = 5000;
        Kundenerz.Elapsed += new ElapsedEventHandler (Kundengroup);
        Kundenerz.Enabled = true;
        Kundenerz2.Interval = 5000;
        Kundenerz2.Elapsed += new ElapsedEventHandler (Kundengroup2);
        Kundenerz3.Interval = 5000;
        Kundenerz3.Elapsed += new ElapsedEventHandler (Kundengroup3);

    {

    public  void Kundengroup(object sender, ElapsedEventArgs e)
    {
        var textView1 = FindViewById<TextView> (Resource.Id.textView1);

        Kundenerz.Enabled = false;
        textView1.Append ("HI");
        textView1.Append ("\r\n");
        Kundenerz2.Interval = 5000;
        Kundenerz2.Enabled = true;

    }

    public void Kundengroup2(object sender, ElapsedEventArgs e)
    {
        var textView1 = FindViewById<TextView> (Resource.Id.textView1);
        Kundenerz2.Enabled = false;
        textView1.Append ("BYE");
        textView1.Append ("\r\n");
        Kundenerz3.enabled = true;  
    }

    public void Kundengroup3(object sender, ElapsedEventArgs e)
    {
        var textView1 = FindViewById<TextView> (Resource.Id.textView1);
        Kundenerz3.Enabled = false;
        textView1.Append ("TRI");
        textView1.Append ("\r\n");
        Kundenerz.Enabled = true;
    }
}

プログラムのこの部分で、最初の5秒後にTextViewに「HI」を追加し、他のタイマーが停止している間にさらに5秒後に「BYE」を追加し、最後に「TRI」を5秒後に追加します。 BYE」そして、すべてを最初からやり直します。これは私にはうまくいきません、私は「HI」を取得するだけで、それからそれは何もしなくなります。

これは私のアプリで行う必要がある最後のことなので、助けていただければ幸いです:)

私はC#にかなり慣れていません...

4

1 に答える 1

2

タイマーは問題ありませんが、タイマーは独自のスレッドで実行されているため、RunOnUiThreadUI要素を更新する場合に使用する必要があります。

public class Activity1 : Activity
{
    public static Timer Kundenerz = new Timer();
    public static Timer Kundenerz2 = new Timer();
    public static Timer Kundenerz3 = new Timer();

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.Main);
        Kundenerz.Interval = 5000;
        Kundenerz.Elapsed += Kundengroup;
        Kundenerz.Enabled = true;
        Kundenerz2.Interval = 5000;
        Kundenerz2.Elapsed += Kundengroup2;
        Kundenerz3.Interval = 5000;
        Kundenerz3.Elapsed += Kundengroup3;
    }

    public void Kundengroup(object sender, ElapsedEventArgs e)
    {
        var textView1 = FindViewById<TextView>(Resource.Id.textView1);

        Kundenerz.Enabled = false;
        RunOnUiThread(() =>
                          {
                              textView1.Append("HI");
                              textView1.Append("\r\n");
                          });
        Kundenerz2.Interval = 5000;
        Kundenerz2.Enabled = true;
    }

    public void Kundengroup2(object sender, ElapsedEventArgs e)
    {
        var textView1 = FindViewById<TextView>(Resource.Id.textView1);
        Kundenerz2.Enabled = false;
        RunOnUiThread(() =>
                          {
                              textView1.Append("BYE");
                              textView1.Append("\r\n");
                          });
        Kundenerz3.Enabled = true;
    }

    public void Kundengroup3(object sender, ElapsedEventArgs e)
    {
        var textView1 = FindViewById<TextView>(Resource.Id.textView1);
        Kundenerz3.Enabled = false;
        RunOnUiThread(() =>
                          {
                              textView1.Append("TRI");
                              textView1.Append("\r\n");
                          });
        Kundenerz.Enabled = true;
    }
}
于 2013-02-26T23:33:49.843 に答える