Ich verwende die Quartz.NET-Bibliothek, um einen Job in meiner C# -Anwendung zu erstellen.Wie man ein neues Windows Form mit Quartz.NET ohne Probleme instanziiert?
Ich habe einige Register in meiner Datenbank, also habe ich eine Tabelle, die eine Spalte namens "start_date" enthält. Der Job wird alle 50 Sekunden ausgeführt. Daher vergleiche ich die Daten aus der Spalte "start_date" mit dem Datum meines Computers. Wenn die Daten identisch sind, möchte ich ein neues Windows Form mit einer Nachricht und einer Schaltfläche instanziieren.
Im Moment ist die neue Windows Form im richtigen Moment öffnet, aber die Nachricht nicht gezeigt wird und das Fenster zu reagieren aufhört.
Grundsätzlich in meinem Code ich habe so etwas wie dies:
FormMessage.cs
public partial class FormMessage : Form
{
public FormMessage()
{
InitializeComponent();
}
public FormMessage(double minutes)
{
InitializeComponent();
string message = string.Format("You have {0} minutes!", minutes);
lblMessage.Text = message ;
}
private void btnOK_Click(object sender, EventArgs e)
{
this.Close();
}
}
JobMessage.cs
public class JobMessage: IJob
{
List<Information> informations;
public void Execute(IJobExecutionContext context)
{
//Class with methods to get registers from database.
InformationAPI infoAPI = new InformationAPI();
informations = infoAPI.GetInformations();
foreach (Information info in informations)
{
DateTime computerDateTime = DateTime.Now;
DateTime infoDateTime = info.StartDate;
double difference;
if (DateTime.Compare(computerDateTime, infoDateTime) < 0)
{
difference = Math.Round(infoDateTime.Subtract(computerDateTime).TotalMinutes);
if (difference == 5)
{
FormMessage formMessage = new FormMessage(difference);
formMessage.Show();
}
}
}
}
}
Jemand eine Idee vom Grund Warum reagiert das FormMessage-Fenster nicht mehr?
Vielen Dank für Ihre Aufmerksamkeit!
der Initialisierung im 'FormMessage loszuwerden() {}' es ein leerer Konstruktor machen. Ändern Sie 'formMessage.Show() ', um die Methode' .ShowModal() 'zu verwenden, erstellen Sie eine automatische Eigenschaft für die Nachrichtenvariable und weisen Sie sie einmal im Konstruktor von FormMessage (difference) zu oder übergeben Sie einen Standardparameter für string.Empty an Dieser Konstruktor und nutzen/nutzen Sie das 'this.' Konstrukt wichtiger .. Verwenden Sie Namespace als auch .. Lassen Sie uns wissen, ob einer dieser Empfehlungen für Sie arbeiten – MethodMan
Hallo, vielen Dank für die Aufmerksamkeit. Ich glaube du meintest '.showDialog()', habe ich recht? Da nur die 'formMessage.Show()' in 'formMessage.showDialog()' geändert wird, läuft die Anwendung gut! Vielen Dank. Ich habe die Dokumentation gelesen, aber nicht sehr gut verstanden, können Sie bitte den Unterschied zwischen den Methoden erklären? – skyyyyy
ja das ist genau das, was ich meinte .. und du bist willkommen für die Hilfe froh, dass ich dir helfen konnte – MethodMan