Avatar billede thomasabcd Nybegynder
10. maj 2005 - 18:25 Der er 4 kommentarer og
1 løsning

Spørgsmål til brug af System.Timers.Timer

Hej. Jeg har lavet nedenstående klasse for at teste brugen af en Timer. Jeg kan sagtens starte timeren, men den vil ikke stoppe igen :-(

using System;
using System.IO;
using System.Data;
using System.Configuration;
using System.Timers;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for MessageReceiver
/// </summary>
public class CMessageReceiver
{
    Timer t;
   
    public CMessageReceiver()
    {
        t = new Timer();
      }

    public void StartMessageReceiver()
    {
        t.Interval = 1000;
        t.Enabled = true;
        t.Start();
        t.Elapsed += new ElapsedEventHandler(t_eventhandler);

        System.Diagnostics.Debug.WriteLine("CMessageReceiver started");
    }


    public void StopMessageReceiver()
    {
        t.Stop();
        System.Diagnostics.Debug.WriteLine("CMessageReceiver stopped");
    }


    public void t_eventhandler(object source, ElapsedEventArgs e)
    {
        System.Diagnostics.Debug.WriteLine("CMessageReceiver Eventhandler called @ "+DateTime.Now.TimeOfDay.ToString());
    }
}

Jeg starter timeren med StartMessageReceiver()-metoden. Mit problem består som sagt i, at jeg ikke kan stoppe timeren igen :-( Jeg kan sagtens kalde StopMessageReceiver()-metoden, og den udskriver "CMessageReceiver stopped", men det virker ikke som om, at timeren stopper, da eventhandleren (t_eventhandler) bliver ved med at blive kaldt. Hvad gør jeg galt ?
Avatar billede snepnet Nybegynder
10. maj 2005 - 20:59 #1
halløjsa ... det lyder lidt sært.
timer.Stop() skulle gerne stoppe timer ved at sætte enabled = false.
det er ikke sådan at det er to forskellige CMessageReciever-objekter du arbejder på ? (eller en anden ting der ligger uden for den kode du har vist... måske du instantierer en CMessageReciever til et sted ell.).
mvh
Avatar billede thomasabcd Nybegynder
10. maj 2005 - 21:35 #2
CMessageReceiver bliver kaldt her fra:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Default3 : System.Web.UI.Page
{
    CMessageReceiver messageReceiver = new CMessageReceiver();

    protected void Page_Load(object sender, EventArgs e)
    {

    }
   
    protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (RadioButtonList1.SelectedValue == "start")
        {
            Response.Write("start");
            messageReceiver.StartMessageReceiver();
        }

        if (RadioButtonList1.SelectedValue == "stop")
        {
            Response.Write("stop");
            messageReceiver.StopMessageReceiver();
        }
    }
}
Avatar billede snepnet Nybegynder
11. maj 2005 - 08:38 #3
du får lavet en ny CMessageReciever hver gang du lavet et postback ... tror du ikke det er det der driller ?
mvh
Avatar billede thomasabcd Nybegynder
11. maj 2005 - 10:58 #4
Jo, det tror jeg :-)
Erklærede den static, og så funger det fint ("static CMessageReceiver messageReceiver = new CMessageReceiver();"). Takker for svaret. Svarer du lige, så du kan få dine point ?
Avatar billede snepnet Nybegynder
11. maj 2005 - 11:07 #5
et svar her :o)
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester