[WPF] Problem bei Content änderung nach TAPI-Event


merzi86

Erfahrenes Mitglied
#1
Ich bin noch ein Anfänger, was C#-Programmierung betrifft.

Ich bin dabei ein Programm zu schreiben, was auf TAPI-Events (primär Offering und Disconnected ) reagiert und die Informationen in ein Fenster ausgibt.

Mein Programm erkennt die Events auf der TAPI ohne Probleme, allerdings unterbricht das Programm seine Arbeit, sobald der Content im Fenster geändert wird bzw. sobald das Fenster mit show() angezeigt bzw. mit close() ausgeblendet werden soll.
Wenn dann ein neues Event auftritt arbeitet das Programm wieder genau bis an die stelle und hört dann auf.

Wenn ich das Fenster manuell über ein anderes Fenster und ein Button aufrufe funktioniert dies ohne Probleme.

Was die TAPI betrifft halte ich mich momentan an dieses Beispiel TAPI-3-0-Application-development-using-C-NET.


Momentan hab ich Probiert das Fenster schon zu öffnen, sobald das Programm gestartet wird und es dann mit der Visibility zu verstecken. Selbst wenn ich dann die zuweisung des Contents auskommentiere bleibt das Programm beim ausführen der zuweisung der neuen Visibility (Visible bzw hidden) hängen.

Hier ist mal der Skript-Teil der für die Anzeige zuständig ist.
Code:
public void setData(TAPI3Lib.ITCallInfo Callinfo)
        {
            // Abfrage ob CallState Offering ist
            if (Callinfo.CallState == TAPI3Lib.CALL_STATE.CS_OFFERING)
            {
                // Nummer setzen mit der Nummer aus der Callinfo
                _Nummer = Callinfo.get_CallInfoString(CALLINFO_STRING.CIS_CALLERIDNUMBER);

                // buffer DataRow setzen
                DataRow buffer;

                // Abfragen ob der DataAdapter-Verbunden ist
                if (_Data.IsConnected == true)
                {
                    // Wenn Verbunden, dann Datenbank nach Rufnummer abfragen
                    buffer = _Data.getKDNr(Callinfo.get_CallInfoString(CALLINFO_STRING.CIS_CALLERIDNUMBER));
                }
                else
                {
                    // Wenn nicht Verbunden, buffer auf null setzen
                    buffer = null;
                }

                // Label für die Telefonnummer setzen (Telefonnummer und Callername, falls bekannt)
                lbltel.Content = Callinfo.get_CallInfoString(CALLINFO_STRING.CIS_CALLERIDNUMBER) + " (" +
                                 Callinfo.get_CallInfoString(CALLINFO_STRING.CIS_CALLERIDNAME) + ")";

                // Abfragen, ob buffer null ist
                if (buffer == null)
                {
                    // Wenn ja Label für den Namen auf Unbekannt setzen
                    lblname.Content = "Unbekannt";

                    // Label für die Art des OMS-Interfaces auf Leer setzen
                    lblart.Content = string.Empty;
                }
                // Wenn buffer nicht leer ist, abfragen, ob Spalte LIEFNR vorhanden ist
                else if (buffer.Table.Columns.Contains("LIEFNR"))
                {
                    // Wenn ja Label für die Art des OMS-Interfaces auf Einkauf setzen
                    lblart.Content = "Einkauf";

                    // Label für den Namen mit dem Firmen-Namen aus der Datenbank setzen
                    lblname.Content = buffer["NAME"].ToString().Trim();

                    // MessageBox.Show("Einkauf " +  + " " + buffer["LIEFNR"].ToString());

                }
                // Wenn buffer nicht leer ist, abfragen, ob Spalte KUNDENNR vorhanden ist
                else if (buffer.Table.Columns.Contains("KUNDENNR"))
                {
                    // Wenn ja Label für die Art des OMS-Interfaces auf Verkauf setzen
                    lblart.Content = "Verkauf";

                    // Label für den Namen mit dem Kunden-Namen aus der Datenbank setzen
                    lblname.Content = buffer["VORNAME"].ToString().Trim() + " " + buffer["KUNDENNAME"].ToString().Trim() + "(" + buffer["KUNDENNR"] + ")";


                    //MessageBox.Show( buffer["KUNDENNR"].ToString() );
                }
                this.Visibility = Visibility.Visible;
            }
            // Abfragen, ob CallState Disconnected ist
            else if (Callinfo.CallState == TAPI3Lib.CALL_STATE.CS_DISCONNECTED)
            {
                // Wenn ja Nummer auf null setzen
                _Nummer = null;

                // Anruf-Fenster schliessen
                this.Visibility = Visibility.Hidden;
            }
        }
Ich hoffe jemand kann mir helfen.

grüße merzi