Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

C Sharp: Timer stoppen aus einer anderen Klasse heraus

Frage Entwicklung C und C++

Mitglied: Heinz2511

Heinz2511 (Level 1) - Jetzt verbinden

21.12.2014 um 15:18 Uhr, 1790 Aufrufe, 1 Kommentar

Hallo,

ich benutze C# mit Visual Studio 2012.
Ich habe folgendes Problem:

Ich habe eine Form (formStart), die ein paar Timer beinhaltet.

Beispiel:
formStart:
private void timer_Zeitanzeige(object sender, EventArgs e)
{
//Zeitanzeige
lablZeit.Text = Convert.ToString(Convert.ToInt32(lablZeit.Text) + 1);

}


Ich habe eine weitere Klasse (classMethoden) aus der heraus ich alle Timer stoppen möchte, die in formStart existieren.
Also in etwa so:

classMethoden:
public void alle_timer_stoppen()
{
formStart.timer_Zeitanzeige.enabled = false;

}

Das funktioniert so aber nicht da ich "formStart.timer_Zeitanzeige" in classMethoden nicht sehe.
Auch wenn ich den timer "public" mache sehe ich ihn in classMethoden nicht (classMethoden.timer_Zeitanzeige gibt es nicht)
Mache ich den timer "static" dann sehe ich "classMethoden.timer_Zeitanzeige" zwar, aber beim Zugriff darauf kommt ein Fehler "für das nicht statische Feld ist ein Objektverweis nötig"

Also meine Frage ist wie ich meine Timer, die in formStart definiert sind, aus classMethoden heraus stoppen kann ?


Danke
Mitglied: colinardo
LÖSUNG 21.12.2014, aktualisiert 23.12.2014
Hallo Heinz2511,
ich würde das mit einem Event in der zweiten Klasse machen, so brauchst du der zweiten Klasse keine Objekte zu übergeben (was du natürlich auch bspw. über den Konstruktor der Klasse machen kannst).

Der Vorteil bei Verwendung eines Events ist, dass du wenn es später mal erforderlich sein sollte, die Klasse aus einem anderen Thread benutzt, du keine Probleme mit CrossThread-Calls bekommst, da die Timer ja im Ursprungs-Thread gestoppt werden

Hier ein Beispiel (Eine Form mit zwei Buttons und einem Label, der eine Button startet den Timer und der andere stoppt den Timer über ein Event welches in der zweiten Klasse getriggert wird)
Visual Studio-Projekt: c-Sharp_stop_timer_by_event_258281.zip
01.
using System; 
02.
using System.Collections.Generic; 
03.
using System.ComponentModel; 
04.
using System.Data; 
05.
using System.Drawing; 
06.
using System.Linq; 
07.
using System.Text; 
08.
using System.Windows.Forms; 
09.
 
10.
namespace WindowsFormsApplication1 
11.
12.
    public partial class Form1 : Form 
13.
14.
        // Timer erzeugen 
15.
        private Timer timer1 = new Timer(); 
16.
        private int counter = 0; 
17.
 
18.
        public Form1() 
19.
20.
            InitializeComponent(); 
21.
22.
 
23.
        private void button1_Click(object sender, EventArgs e) 
24.
25.
            // Timer starten 
26.
            timer1.Enabled = true; 
27.
28.
 
29.
        private void timer1_Tick(object sender, EventArgs e) 
30.
31.
            counter++; 
32.
            label1.Text = counter.ToString(); 
33.
34.
 
35.
        private void button2_Click(object sender, EventArgs e) 
36.
        {    
37.
            // Ein Objekt der anderen Klasse erzeugen 
38.
            classMethoden test = new classMethoden(); 
39.
            // Das Event abbonieren 
40.
            test.stopTimerEvent += new EventHandler(stopMyTimer); 
41.
            // Methode aufrufen die anschließend das Event triggert 
42.
            test.doSomething(); 
43.
44.
 
45.
        //Eventhandler der den Timer stoppt 
46.
        private void stopMyTimer(object sender,EventArgs e) 
47.
48.
            timer1.Enabled = false; 
49.
50.
 
51.
        private void Form1_Load(object sender, EventArgs e) 
52.
53.
            timer1.Enabled = false; 
54.
            timer1.Tick += new EventHandler(timer1_Tick); 
55.
            timer1.Interval = 100; 
56.
57.
 
58.
59.
60.
 
61.
public class classMethoden 
62.
63.
    public event EventHandler stopTimerEvent; 
64.
    public void doSomething() 
65.
66.
        // Hier was machen , am Ende wird die Event-Procedure getriggert 
67.
        execute_event(); 
68.
69.
    public void execute_event() 
70.
71.
        // Event triggern 
72.
        if (stopTimerEvent != null) 
73.
            stopTimerEvent(this, new EventArgs()); 
74.
75.
}
Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
C und C++
C-Sharp Label aus anderer Klasse heraus ändern
gelöst Frage von 8digitC und C++2 Kommentare

Hi, in einer C# Form habe ich ein Label, welches sich aus einer anderen Klasse heraus ändern soll. Datei1: ...

C und C++
C-Sharp - Event durch eine Klasse durchreichen?
Frage von mabue88C und C++1 Kommentar

Hallo, ich habe ein Projekt, bei dem eine Klasse mehrere untergeordnete Klassen besitzen. Nehmen wir einfach mal an, dass ...

C und C++
C-Sharp - Zugriff auf Eigenschaften von vererbter Klasse
gelöst Frage von mabue88C und C++4 Kommentare

Hallo, ich habe mal wieder eine Frage, die für die Profis wahrscheinlich schnell zu beantworten ist. Folgendes Szenario: Ein ...

Visual Studio
C-Sharp Klasse als Parameter an Function übergeben
gelöst Frage von mayho33Visual Studio

Hallo @ All Ich beiße mir schon wieder die Zähne aus und hoffe aufs Neue auf eure Unterstützung mit ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 3 StundenBatch & Shell1 Kommentar

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 5 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 20 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 21 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Server-Hardware
Braucht ein Server eine Grafikkarte?
gelöst Frage von lcer00Server-Hardware14 Kommentare

Hallo zusammen, habe gerade 3 Stunden gebraucht, um herauszubekommen, dass die Remotemanagement-Console von Intel (RMM4) nur funktioniert, wenn die ...

Linux
OpenSource Groupware
Frage von FA-jkaLinux13 Kommentare

Hallo, ich suche eine Groupware als Alternative zum Exchange. Wesentliche Aufgaben sind die Handhabung von E-Mails (persönliche und gemeinsam ...