private void OnCallStateChanged(object sender, CallStateEventArgs e) { if (this.InvokeRequired) { EventHandler <CallStateEventArgs> eh = OnCallStateChanged; this.BeginInvoke(eh, new object[] { sender, e }); return; } TapiLine line = (TapiLine)sender; TapiCall call = e.Call; foreach (ListViewItem lvi in lvCalls.Items) { if (lvi.Tag == call) { lvi.SubItems[COLUMNS_STATE].Text = call.CallState.ToString(); if (GetActiveCall() == call) { AdjustButtonState(call); } if (call.CallState == CallState.Idle) { call.Dispose(); lvCalls.Items.Remove(lvi); } break; } } }
private void ActiveCallForm_FormClosed(object sender, FormClosedEventArgs e) { try { _call.Drop(); } catch { } _call.Line.CallInfoChanged -= OnCallInfoChange; _call.Line.CallStateChanged -= OnCallStateChange; try { _call.Dispose(); } catch { } }