Ich schreibe ein Programm, dass im Hintergrund läuft und Daten eines Telefonanrufs aus einem externem Fenster abruft um dann bestimmte Optionen wie z.B. das aufschalten per VNC an zu bieten.
Dazu habe ich eine Klasse (CallWatcher) geschrieben, die die Daten aus dem Fenster ausliest und einige Ereignisse zur Verfügung stellt. Wenn z.B. ein Anruf angenommen wird soll das Formular der Klasse AktualCall angezeigt werden.
Wie ist es nun möglich für das ganze Programm nur eine Instanz der Klasse AktualCall zu erstellen um dann unter bestimmten Bedingungen das Formular anzeigen zu lassen. Wenn ich die Instanz der Klasse in Main erstelle kann ich ja nicht aus CallIncoming darauf zu greifen.
Was mich ausserdem wundert ist warum das Formular einfriert wenn ich MainForm.Show anstatt MainForm.ShowDialog verwende.
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace telefontool
{
class Program
{
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
CallWatcher callwCallWatch = new CallWatcher();
callwCallWatch.CallIncoming += new CallIncomingEventHandler(CallIncoming); //Verknüfung
//MainForm.Show();
Application.Run();
}
private static void CallIncoming(object sender, CallIncomingEventArgs e)
{
AktualCall MainForm = new AktualCall();
MainForm.labPhoneNumber.Text = e.TelNumber;
MainForm.labUserName.Text = e.Name;
MainForm.ShowDialog();
}
}
}