Wie führe ich mein c # -Programm als geplante Aufgabe aus?

7

Ich bin immer noch ziemlich neu in c #, also wirst du es mit mir ertragen müssen.

Ich habe ein Windows-Formular-Programm entwickelt, das einige SQL-Datensätze als Tagesabschluss für einen unserer Kunden aktualisiert.

Der nächste Schritt ist, dass ich das Programm auf einem Server installieren und einen Knopfklick im Programm simulieren muss, um eine geplante Aufgabe zu werden.

Ich weiß, wie Sie die Aufgabe auf der Serverseite einrichten, wo Sie das Programm starten und die Argumente eingeben. Aber ich bin unsicher, welchen Code ich in mein Programm aufnehmen muss, um dies zu erreichen.

    
Matthew P 28.01.2013, 13:11
quelle

9 Antworten

6

Meine Empfehlung wäre, von einer GUI-basierten / gefensterten Anwendung von einer geplanten Aufgabe abzuraten - das ist in der Praxis in der Regel Wahnsinn. Im Idealfall stellen Sie eine konsolenbasierte Version Ihrer Anwendung bereit, die ausgeführt werden muss (möglicherweise mit Parameterargumenten) und keine Benutzer- (oder Quasi-Benutzer-) Interaktion erfordert.

Wenn Sie einfach nicht eine 'Systemversion' Ihrer Anwendung erstellen können, dann haben Sie zwei Möglichkeiten, beide immens hässlich: 1) Erstellen Sie eine Art Makroskript, das stattdessen ausgeführt wird Ihres Programms könnte dieses Skript das Programm ausführen und 'den Klick' auslösen, 2) den 'Klick' beim Start Ihrer Anwendung ausführen, indem der Button-Klick-Handler aufgerufen wird (möglicherweise basierend auf einem Parameter, um ihn in Ausführungsmodi zu dualieren). )

    
Grant Thomas 28.01.2013, 13:13
quelle
7

Erwägen Sie, Windows Task Scheduler zu verwenden .

Sie können Ihre Geschäftslogik in eine separate DLL extrahieren und eine einfache Konsolenanwendung schreiben, die Ihre Aufgabe nur ausführt, nachdem Sie die Parameter über die Befehlszeile akzeptiert haben.

    
Jakub Konecki 28.01.2013 13:12
quelle
2

Ich denke, Sie fragen auch nach der Übergabe von Befehlszeilenargumenten. Siehe die Antworten zu diese Frage .

>

Ich empfehle insbesondere die akzeptierte Antwort : NDesk.Options .

    
Peter K. 28.01.2013 13:16
quelle
2

Wenn es sich um eine Windows-Anwendung handelt, gehen Sie einfach in den bin-Ordner, rufen Sie die ausführbare Datei ab und planen Sie schließlich eine Aufgabe dafür, indem Sie die windows-Aufgabe verwenden und die exe-Datei als Zielanwendung auswählen.

Wenn es sich um eine Webanwendung handelt, möchten Sie vielleicht Ihren Code in einen quartz.net geplanten Job aufnehmen, Details finden Sie auf der quartz.net-Website.

    
George Eye 06.08.2013 10:03
quelle
1

Sehr beliebte Lösung ist Quartz.NET Ссылка

    
Sergey Gavruk 28.01.2013 13:14
quelle
1

Ich habe eine ähnliche Aufgabe zu tun Winforms als Windows-Task zu machen. Was ich getan habe, ist

in windows task scheduler in task tab , unter Run setze deine exe und dann / Auto, es wird als Zeitplan ausgeführt.

Beispiel: winform.exe / Auto

    
Kiran1016 28.01.2013 13:19
quelle
1

Wenn ich Ihre Frage richtig verstehe, können Sie so weitermachen:

Wim Ombelets 28.01.2013 13:19
quelle
0

Werfen Sie einen Blick in die Timer-Klasse
Ссылка

    
zabulus 28.01.2013 13:13
quelle
0

Warum extrahieren Sie Ihre Datenbankaktualisierungslogik nicht als Windows-Dienst

Sie können den SQL-Bearbeitungsteil in einem separaten DLL trennen und den gemeinsamen DLL für Ihre Formularanwendung und den Windows-Dienst verwenden.

Ein Fensterdienst wird im Hintergrund ausgeführt und kann beim Booten des Computers automatisch gestartet werden, kann angehalten und neu gestartet werden und zeigt keine Benutzeroberfläche an.

Außerdem müssen Sie keine Software von Drittanbietern für diese Software installieren, und die Windows Service-Code-Basis kann auf jede Windows-Maschine mit der erforderlichen Version von .Net Framework installiert werden.

    
Varinder Singh 28.01.2013 13:26
quelle

Tags und Links