2 Stimmen

Outlook VSTO AddIn für Besprechungen

Wir haben ein VSTO Addin für Outlook Meetings erstellt.

In diesem Zusammenhang fangen wir die SendEvent der Nachricht auf dem FormRegionShowing Veranstaltung:

_apptEvents.Send += new Microsoft.Office.Interop.Outlook.ItemEvents_SendEventHandler(_apptEvents_Send);

Die Methode _apptEvents_Send und testet dann einige Eigenschaften und verlässt das Programm gegebenenfalls.

private void _apptEvents_Send(ref bool Cancel)
{
    if (!_Qualified)
    {
        MessageBox.Show("Meeting has not been qualified", "Not Qualified Meeting", MessageBoxButtons.OK, MessageBoxIcon.Information);
        chkQualified.Focus();
        Cancel = true;
    }
}

Das Problem, das wir haben, ist, dass die Nachrichten einiger Nutzer doppelt gesendet werden. Einmal, wenn die Besprechung gesendet wird, und ein zweites Mal, wenn der Nutzer Outlook erneut öffnet.

Ich habe nach Speicherlecks gesucht, weil ich dachte, dass irgendetwas nicht richtig entsorgt werden könnte, und ich habe explizite Objektentsorgung bei allen abschließenden Aufrufen hinzugefügt, um sicherzustellen, dass die Ressourcen verwaltet werden, aber ich erhalte die Funktionalität immer noch inkonsistent in der gesamten Organisation, d. h. ich bin während der Entwicklung nie auf das Problem gestoßen, und andere Entwickler während der Tests auch nicht. Alle Benutzer sind auf dem neuesten Stand des Frameworks (3.5 SP1) und der Hotfixes für Outlook.

Hat jemand eine Idee, was die Ursache dafür sein könnte?

Für jede Idee, die jemand hat, wären wir sehr dankbar.

0voto

Bryan Punkte 153

Ich bin kein Profi, aber in der Vergangenheit hatte ich bei der Outlook-Automatisierung Probleme mit den Einstellungen für das Versenden von E-Mails der Benutzer.

Meine Mails werden zum Beispiel nur gesendet, wenn ich einen Sende-/Empfangszyklus erzwinge. Die meisten Leute haben Outlook, um sofort zu senden, und ich erinnere mich an einige Kopfschmerzen, als jemand zum ersten Mal nach den wirklich einfachen Automatisierungsskripten fragte.

um zu sehen, ob dies etwas ist, das alle Entwickler gemeinsam haben und die Benutzer möglicherweise anders eingerichtet haben.

0voto

user20389 Punkte 41

Warum verwenden Sie Microsoft.Office.Interop.Outlook.ApplicationEvents_10.Send Event anstatt den angegebenen Handler immer wieder hinzuzufügen.

Fügen Sie bei der Startmethode Ihres vsto-Addons einfach :

((MSOutlook.ApplicationEvents_10_Event)_OutlookApp).ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_10_ItemSendEventHandler(Utils_ItemSend);

void Utils_ItemSend(object Item, ref bool Cancel)
{
    //Do your operation here.
}

0voto

Shyam sundar shah Punkte 2331

Sie machen einen kleinen Fehler. Ändern Sie Ihren Code wie folgt

 private void _apptEvents_Send(ref bool Cancel)
 {
    if (!_Qualified)
    {
    MessageBox.Show("Meeting has not been qualified", "Not Qualified Meeting", 
    MessageBoxButtons.OK, MessageBoxIcon.Information);
    chkQualified.Focus();
    Cancel = true;
    return; // need to add this one line
  }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X