IMessageFilter::RetryRejectedCall-Methode (objidl.h)

Bietet Anwendungen die Möglichkeit, ein Dialogfeld anzuzeigen, das Optionen für Wiederholungen, Abbrechen oder Aufgabenwechsel bietet.

Syntax

DWORD RetryRejectedCall(
  [in] HTASK htaskCallee,
  [in] DWORD dwTickCount,
  [in] DWORD dwRejectType
);

Parameter

[in] htaskCallee

Die Thread-ID der aufgerufenen Anwendung.

[in] dwTickCount

Die Anzahl der verstrichenen Ticks seit dem Anruf.

[in] dwRejectType

Gibt entweder SERVERCALL_REJECTED oder SERVERCALL_RETRYLATER an, wie von der Objektanwendung zurückgegeben.

Rückgabewert

Diese Methode kann die folgenden Werte zurückgeben.

Rückgabewert BESCHREIBUNG
-1
Der Anruf sollte abgebrochen werden. COM gibt dann RPC_E_CALL_REJECTED aus dem ursprünglichen Methodenaufruf zurück.
0 ≤ Wert< 100
Der Aufruf soll sofort wiederholt werden.
100 ≤ Wert
COM wartet auf diese Anzahl von Millisekunden und wiederholt den Aufruf.

Hinweise

COM ruft RetryRejectedCall auf der IMessageFilter-Schnittstelle des Aufrufers auf, unmittelbar nachdem SERVERCALL_RETRYLATER oder SERVERCALL_REJECTED von der IMessageFilter::HandleInComingCall-Methode auf der IMessageFilter-Schnittstelle des Aufgerufenen empfangen wurde.

Wenn eine aufgerufene Aufgabe einen Aufruf ablehnt, befindet sich die Anwendung wahrscheinlich in einem Zustand, in dem sie solche Aufrufe nicht verarbeiten kann, möglicherweise nur vorübergehend. In diesem Fall kehrt COM zum Aufrufer zurück und gibt RetryRejectedCall aus, um zu bestimmen, ob der abgelehnte Aufruf wiederholt werden soll.

Anwendungen sollten Aufrufe, die mit SERVERCALL_RETRYLATER zurückgegeben wurden, automatisch wiederholen. Wenn nach einer angemessenen Zeitspanne etwa 30 Sekunden vergangen ist, sollte die Anwendung das ausgelastete Dialogfeld anzeigen. Eine Standardimplementierung dieses Dialogfelds ist in der OLEDLG-Bibliothek verfügbar. Der Aufgerufene kann sich vorübergehend in einem Zustand befinden, in dem Anrufe verarbeitet werden können. Die Option zum Warten und Wiederholen von Anwendungen wird für spezielle Arten von aufrufenden Anwendungen bereitgestellt, z. B. Hintergrundaufgaben, die Makros oder Skripts ausführen, sodass sie die Aufrufe auf nichtintrusive Weise wiederholen können.

Wenn der Benutzer nach dem Anzeigen eines Dialogfelds den Vorgang abbrechen möchte, gibt RetryRejectedCall -1 zurück, und der Aufruf scheint mit RPC_E_CALL_REJECTED fehlzuschlagen.

Wenn ein Client IMessageFilter implementiert und eine Servermethode auf einem Remotecomputer aufruft, wird RetryRejectedCall nicht aufgerufen.

Hinweis Obwohl der htaskCallee-Parameter als HTASK eingegeben wird, enthält er die Thread-ID des aufgerufenen Threads. Wenn Sie die IMessageFilter-Schnittstelle implementieren, können Sie die OpenThread-Funktion aufrufen, um das Threadhandle aus dem htaskCallee-Parameter abzurufen, und Sie können die GetProcessIdOfThread-Funktion aufrufen, um die Prozess-ID abzurufen.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile objidl.h

Weitere Informationen

Imessagefilter