C# Programm anhalten, nicht beenden in WinForms?

Hey, habe einen Lotto Simulator, der mir ausrechnet wie viele Versuche es braucht um 6 richtige aus 49 zu haben.

Jetzt dauert das ganze ja manchmal eeeewig :D habe einen Beenden Button hingemacht mit dem ich das Programm eben anhalte möchte und es mir dann alles ausgibt, was er bis dahin errechnet hat.

Ich finde aber nur Befehle wie this.Close(); wo das gesamte Programm schließt? Das will ich ja nicht.

Gibt es hier irgendeinen Befehl/Methode dazu? Oder habt ihr Ideen? Hier mal ein Teil von meinem Code:

 while (!(numbers.Contains(value1) && numbers.Contains(value2) && numbers.Contains(value3) && numbers.Contains(value4) &&

        numbers.Contains(value5) && numbers.Contains(value6)))

      {

        number1 = rnd.Next(minValue, maxValue);

        number2 = rnd.Next(minValue, maxValue);

        number3 = rnd.Next(minValue, maxValue);

        number4 = rnd.Next(minValue, maxValue);

        number5 = rnd.Next(minValue, maxValue);

        number6 = rnd.Next(minValue, maxValue);

        numbers[0] = number1;

        numbers[1] = number2;

        numbers[2] = number3;

        numbers[3] = number4;

        numbers[4] = number5;

        numbers[5] = number6;

        counter++;

        txtResult.Text = counter.ToString();

        txtMoney.Text = (money * counter).ToString();

        Application.DoEvents();

      }

      txtResult.Text = counter.ToString();

      txtMoney.Text = (counter * money).ToString();

      txtWait.Text = "Fertig!";

Ist nur ein kleiner Teil der eben die Berechnung und Erstellung neuer Zufallszahlen generiert.

LG

Computer, Schule, IT, programmieren, Informatik, Windows Forms, sprache c
C# Delegaten/Invoke/Thread/Backgroundworker?

Huhu,

bin aktuell am rumexperimentieren, da ich es am lernen bin. Dieses Test Form hat nur 2 Dinge die es machen soll.

  1. Das Form Load wird mit einem Label gestartet um den Spieler zu begrüßen. Nach 2 bzw 3 Sekunden soll dass label unsichtbar werden mithilfe eines Backgroundworkes und delegaten. Alles startet normal. Nach den besagten paar Sekunden wirft er mir eine exeption. Als Grund nennt er mir immer das label1. Meine Vermutung ist, dass label 1 ja bereits Form1 Thread läuft und daher nicht mehr geändert werden kann über einen Backgroundworker.

Die Exeption lautet : Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement label1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."

  1. Der zweite Punkt wäre, dass bei einem Button click ein Fenster aufgehen soll und sich nach ein paar Sekunden wieder schließen soll. Das tut es auch. Drücke ich aber nochmal den Button, wirft er mir diese Exeption: System.ObjectDisposedException: "Auf das verworfene Objekt kann nicht zugegriffen werden.Objektname: "Skynet"."

Hier ist der Code:

Für den Kenner ist das bestimmt alles Kraut und Ruben. Kurz: Ein Chaos. Aber aktuell ist es eher Try and Error :)

 public partial class Form1 : Form

  {

    public delegate void invokeDelegate();

    //Backgroundworker wird initialisiert

    public BackgroundWorker arbeiter = new BackgroundWorker();

    public BackgroundWorker arbeiter2 = new BackgroundWorker();

    //Delegaten

    public delegate void deleWorker (BackgroundWorker a);

    public delegate void gruss(BackgroundWorker b);

    //Begrüßungsfenster

    Skynet hello = new Skynet();

    //Zeigt Skynet Fenster an

    public void Show()

    {

       hello.Show();

        Thread.Sleep(3000);

        this.hello.Close();

        hello.Dispose();

    }

    //Willkommensgruß wird für 2 Sekunden angezeigt

    private void Willkommensgruss(Label a)

    {

      a.Text = "Willkommen, Fremder.";

      Thread.Sleep(2000);

        }

    public Form1()

    {

      InitalizeComponent();

      arbeiter.DoWork += backgroundWorker1_DoWork;

      arbeiter2.DoWork += backgroundWorker2_DoWork;

      Skynet hello = new Skynet();

         }

    private void Form1_Load(object sender, EventArgs e)

    {

      //delegate

      gruss hallo = new gruss(backgroundWorker2.RunWorkerAsync);

        hallo.Invoke(backgroundWorker2);

    }

    //Öffnet Skynet Fenster

    private void button2_Click(object sender, EventArgs e)

    {

      deleWorker test = new deleWorker(backgroundWorker1.RunWorkerAsync);

      test.Invoke(backgroundWorker1);

    }

    //Backgroundworker 1

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)

    {

     Show();    

    }

    //Backgroundworker 2

    private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)

    {

    Willkommensgruss(label1);

    }

  }

}

Computer, programmieren, C Sharp, Visual Studio
Was ist an diesem ABAP-Code falsch?

Mein Ziel: Einen Taschenrechner in ABAP mit Pushbuttons, die der Benutzer anklicken kann (+,-,*,/)

Mein Problem: Wenn ich die beiden Variablen "zahl1" und "zahl2" mit einander verrechne, wird das Ergebnis nicht in dem Parameter "Ergebnis" angezeigt, was es eigentlich tun sollte.

REPORT z_taschenrechner.
    
    
    DATA: ergebnis TYPE p DECIMALS 3.
    
    SELECTION-SCREEN BEGIN OF BLOCK b1.
    PARAMETERS: zahl1 TYPE i,
                zahl2 TYPE i.
    SELECTION-SCREEN END OF BLOCK b1.
    
    SELECTION-SCREEN: BEGIN OF LINE,
      PUSHBUTTON 42(5) push1 USER-COMMAND f1,
      PUSHBUTTON 48(5) push2 USER-COMMAND f2.
    SELECTION-SCREEN END OF LINE.
    
    SELECTION-SCREEN: BEGIN OF LINE,
      PUSHBUTTON 42(5) push3 USER-COMMAND f3,
      PUSHBUTTON 48(5) push4 USER-COMMAND f4.
    SELECTION-SCREEN END OF LINE.
    
    SELECTION-SCREEN: BEGIN OF LINE,
      PUSHBUTTON 45(5) push5 USER-COMMAND f5.
    SELECTION-SCREEN END OF LINE.
    
    SELECTION-SCREEN BEGIN OF BLOCK b2.
    PARAMETERS: op     TYPE c,
                result TYPE p DECIMALS 3 DEFAULT ergebnis.
    SELECTION-SCREEN END OF BLOCK b2.
    
    
    
    *********************************************************************
    *                         INITIALIZATION                            *
    *********************************************************************
    
    INITIALIZATION.
      push1 = '+'.
      push2 = '-'.
      push3 = '*'.
      push4 = '/'.
      push5 = '='.
    
    
    
    
    clear op.
    clear ergebnis.
    
    AT SELECTION-SCREEN.
      CASE sy-ucomm.
        WHEN 'F1'.
          op = '+'.
    
    
        WHEN 'F2'.
          op = '-'.
    
        WHEN 'F3'.
          op = '*'.
    
        WHEN 'F4'.
          op = '/'.
    
        when 'F5'.
               CASE op.
                  WHEN '+'.
                      ergebnis = zahl1 + zahl2.
                  WHEN '-'.
                      ergebnis = zahl1 - zahl2.
                  WHEN '*'.
                      ergebnis = zahl1 * zahl2.
                  WHEN '/'.
                      ergebnis = zahl1 / zahl2.
              ENDCASE.
    
      ENDCASE.
programmieren, Ausbildung, Informatik
Globale Variablen durch Zeiger ersetzen?

Hallo,

bei der folgenden Programmieraufgabe würde ich gerne die globalen variablen durch Zeiger ersetzten, da man mit den globalen Variablen ja etwas vorsichtig sein sollte.

include include include

double x0; //globale variablen int ok, anzit;

double fct (int fn, double x){ // Funktion fct mit 2 Parametern

double y;

switch (fn) {                                               // switch case funktion zum Auswählen der Funktion
    case 1:     y = sin(x);                     break;
    case 2:     y = exp (x) - 5.0 * x + 1.0;    break;
    case 3:     y = x * x - 2.0;                break;
    case 4:     y = (1.0 / 7.0) + (1.0/x);      break;
    case 5:     y = 2.0 * x - 2.0;              break;
    default:    y = 0.0;                        break;
}
return y;

}

void nullstelle (int fn, double a, double b, double g) { // Prozedur Nullstelle

double fa, fb, fm, m;
                                                                // Verarbeitung der Parameter und Variablen

fa = fct (fn, a);
fb = fct (fn, b);

while ((b-a) > g) {

    m = (a+b) / 2.0;
    fm = fct (fn, m);

    if ((fa*fm) < 0) {
        b = m; fb = fm;
    }

        else {
            a = m; fa = fm;
        }
    anzit++;
}
        x0 = m;
        ok = 1;

}

int main(){ // Hauptprogramm // Fordert den Benutzer auf Befehle einzugeben int fn; double a, b, g;

printf ("1) f(x) = sin (x) \n");
printf ("2) f(x) = e^x - 5x + 1 \n");
printf ("3) f(x) = x^2 - 2 \n");
printf ("4) f(x) = (1/7) + (1/x) \n");
printf ("5) f(x) = 2x - 2 \n");


while (1) {
    printf ("\nWaehlen Sie eine Funktion aus: ");
    scanf ("%d", &fn);

    printf ("Linker Grenzwert: ");
    scanf ("%lf", &a);

    printf ("Rechter Grenzwert: ");
    scanf ("%lf", &b);

while (fct (fn, a) * fct (fn, b) > 0.0){
    printf ("\nf(a) und f(b) haben gleiches Vorzeichen, bitte andere Grenzen eingeben!");
    printf ("\nLinker Grenzwert: ");
    scanf ("%lf", &a);
    printf ("\nRechter Grenzwert: ");
    scanf ("%lf", &b);
    }

    printf ("Genauigkeit: ");
    scanf ("%lf", &g);

    nullstelle (fn, a, b, g);

    if (ok == 1)
        printf ("x0 \t = %.15f\n", x0);
        printf("f(x0) \t = %.15f\n", fct(fn, x0));
        printf("%d Iteration\n", anzit);

}

return 0;

}

programmieren, C (Programmiersprache)
Wie viel Erfahrung um mit Programmieren Geld zu verdienen?

Hallo zusammen,

Also erstmal was zu mir. Ich studiere Informatik und habe viel Spaß am Programmieren gefunden. An der Uni haben wir Java Programmierung in 2 Semestern. Es ist sogar so, dass ich seit gut einem Monat viel mehr Zeit in dieses Fach investiere, als eigentlich für das Modul nötig. Da ich im "Selbststudium vor Beginn des eigentlichen Studiums, ehr gescheitert bin, mir Java selbst beizubringen, hatte ich mir vorgenommen ( und auch eingehalten) mindestens 1h täglich zu programmieren sobald das Studium anfängt, so als "gute Angewohnheit". Da ich, beim Versuch es mir selbst beizubringen oft viel zu lange nichts dazwischen gemacht habe. Das ich das ganze auch so durchgezogen habe, verdank ich irgendwo unseren Wöchentlichen Abgaben. Unserem Kurs bin ich auch in etwa 2 Wochen im voraus, da unser Prof. die kompletten Vorlesungen als Video online hochlädt (Wir können also das ganze Semester theoretisch vorarbeiten, da von letztem Jahr alle Vorlesungen für uns online sichtbar sind) Nun, das ist auch eigentlich nicht das Thema, aber hat mich zu folgenden Fragen geführt.

  1. Ist man nach dem was man von der Uni lernt in Punkto Programmierung ( Bei uns Modul in 2 Semestern ) in der Lage auch Geld damit Privat zu verdienen? Wie weit qualifiziert das? Bei uns mit der Sprache Java.

  2. Wie viel Erfahrung bzw. Zeit braucht man beim Programmieren um sich etwas dazu zuverdienen? Also sagen wir mal ich bleib bei 1-2h täglich die ich investiere, hin und wieder auch mal mehr. Was sagt eure Erfahrung? Wie lang bräuchte ich dann ca. um gut, besser oder wirklich gut zu werden? Ich weiß sowas ist schwer zu sagen. Eine kleine Einschätzung wär mich schon genug.

Theoretisch wenn ich mal nach dem zweiten Semester anfange nebenbei für Leute was zu programmieren würde ich ich mich als Student schon über 100 Euro mehr im Monat freuen. Je nach dem wie sich mein "Spaß" hier entwickelt überlege ich sogar auf einen Studiengang zu wechseln der seinen Fokus auf programmieren legt. Jedenfalls ist es das erste mal, seit dem ich Klavier spielen gelernt habe, dass mir etwas wirklich Spaß macht und ich sozusagen freiwillig jeden Tag etwas Zeit investiere ohne das Gefühl zu haben es wäre "Doof".

3. Gibt es vielleicht sogar Selbstständige Programmierer unter euch? Was sagt ihr, wie viel Aufwand in lernen man stecken muss bevor man vielleicht davon Leben kann? Seinen ersten Euro verdienen kann? Ist zwar eine sehr pauschale Frage, aber ich erwarte auch keine Präzise Antwort! :-)

Gruß Capcord

PC, Computer, Webseite, programmieren, Java, Code, Ausbildung und Studium
Wie kann ich die Aufgabenplanung / Batch korrekt starten, Wo ist der Fehler?

Guten Tag, ich habe ein Problem ich benötigte 2 Programme die immer laufen müssen. Nach über 24h haben die aber oft genug ihre Probleme und müssen daher neugestartet werden.

Hierfür wurde eine Batch-Datei geschrieben:

@echo off :start taskkill /f /im rs.exe taskkill /f /im "Amazon Merchant Transport Utility.exe" timeout /t 120 /nobreak start "" C:\AMTU\"Amazon Merchant Transport Utility".exe timeout /t 60 /nobreak start "" C:\VARIO7\Programm\rs.exe @echo on

Vor dem Update des AMTU hatte diese Einstellung der Batch die Programme beendet und gestartet. Doch nach dem notwendigen Update (Windows hatte den AMTU sonst nicht mehr gestartet/unterstützt) kommt die nervige Sicherheitsabfrage ob ich mir bewusst sei, dass dieses Programm Änderungen vornehmen kann bzw. Dateien hoch- und runterlädt.

So nun bleibt die Möglichkeit die Sicherheitsstufe beim WinDoof 10 auf unterirdisch zu setzten und diese Meldung abzuschalten. Doch wirklich begeistert bin ich davon nicht. Also ist die Meldung an.

Blöd nur ... die Batch startet und läuft nur noch korrekt wenn Sie als Admin gestartet wird. Sonst kommt die Warnmeldung.

Damit der Start automatisiert erfolgt insbesondere am Wochenende wurde die Windows interne Aufgabenplanung genutzt.

Hierfür wurde eine Aufgabe erstellt: "Beende und Starte AMTU und RS".

Unter Sicherheitsoptionen wurde das Admin-Userkonto + "Unabhängig von der Benutzeranmeldung auszuführen" + Mit höchsten Privilegien ausführen.

Letzteres - so ging ich aus - seien Adminrechte.

Als Trigger wurde einfach die gewünschte Zeit ausgewählt zu der die Batch ausgeführt werden soll.

Die Aktion enthält "Programm starten" und verweist auf die Batch Datei. Es wurden jedoch keine Argrumente hinzugefügt.

Bedingungen: - Aufgabe nur starten, falls Computer im Netzbetrieb ausgeführt wird.

Einstellungen: - Ausführung der Aufgabe bei Bedarf zulassen - Aufgabe so schnell wie möglich nach verpassten Start ausführen - Beenden der aktiven Aufgabe erzwingen, falls sie auf Aufforderung nicht beendet wird - Vorhandene Instanz anhalten, falls die Aufgabe bereits ausgeführt wird

Das Problem ist folgendes... das Programm scheint zwar zumindest lt. Verlauf zu starten. Doch es packt den AMTU in die Hintergrundprozesse wo er nur sporadisch arbeitet, wenn überhaupt. Ich brauche diese App aber als aktiven Prozess und nicht im Hintergrund.

Habt ihr einen Tipp für mich, wo der Fehler liegt oder gar wie ich es besser umsetze, dass die Programme regelmäßig beenden und starten?

Oder auch wie ich die Sicherheitsmeldungen für bestimmte Programme deaktivieren kann?

Ich danke bereits im Voraus. ^^ Chiru

Computer, Windows, Technik, Amazon, Programm, programmieren, Batch, Technologie, Aufgabenplanung, Windows 10, Spiele und Gaming
Wie bekomme ich Daten aus einer bestimmten Zeile (Sqlite, Android Studio?

(Ich bin noch relativ neu in Android Studio, bzw. Programmieren generell, aber learning by doing und so) Ich will die Daten die ich zuvor in die Datenbank gespeichert habe, auslesen und als Beschriftung eines Buttons einfügen. Da ich keine Zeilen hinzufügen oder löschen will, werden bei erstellen der Tabelle gleich alle Zeilen mit erstellt, so dass ich deren IDs habe. Nun ich hab ich versucht eine Lösung zu finden, jedoch crasht die App wenn ich mein Herumgemurckse ausführe (was wahrscheinlich nicht verwunderlich ist ^^' ) Der Name der Datenbank usw.:

    public static final String DATABASE_NAME = "stundenplan.db";
    public static final String TABLE_NAME = "faecher";
    public static final String COL_1 = "ID";
    public static final String COL_2 = "fach";
    public static final String COL_3 = "farbe";

Die getData() Methode aus der DatabaseHelper Class:

public Cursor getData(){
        SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
        Cursor res = sqLiteDatabase.rawQuery("SELECT * FROM " + COL_2 + " WHERE "  + COL_1 + " = 1", null);
        return res;
    }

Die onClick() Methode aus der (Tabbed) Activity:

btn_ok.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Cursor res = myDB.getData();
                    btn_mo1 = view.findViewById(R.id.btn_mo1);
                    btn_mo1.setText(res.getString(1));
                }
            });

Ich bekomme übrigens keinen Fehlercode oder so.

Computer, Technik, programmieren, Java, Android, Technologie, SQLite, Android Studio, Spiele und Gaming

Meistgelesene Beiträge zum Thema Programmieren