Partager via


IVsQueryUndoUnit.ActionWouldBeAborted, méthode

Interroge chaque membre d'un ensemble lié de phase de restauration pour déterminer si une opération d'annulation est interrompue.

Espace de noms :  Microsoft.VisualStudio.TextManager.Interop
Assembly :  Microsoft.VisualStudio.TextManager.Interop.8.0 (dans Microsoft.VisualStudio.TextManager.Interop.8.0.dll)

Syntaxe

'Déclaration
Function ActionWouldBeAborted ( _
    <OutAttribute> ByRef pbWouldBeAborted As Integer _
) As Integer
int ActionWouldBeAborted(
    out int pbWouldBeAborted
)
int ActionWouldBeAborted(
    [OutAttribute] int% pbWouldBeAborted
)
abstract ActionWouldBeAborted : 
        pbWouldBeAborted:int byref -> int
function ActionWouldBeAborted(
    pbWouldBeAborted : int
) : int

Paramètres

  • pbWouldBeAborted
    Type : Int32%

    [out] si 1 (TRUE), opération d'annulation est interrompu ; si 0 opérations d'annulation (FAUSSES) ne seraient pas interrompu.

Valeur de retour

Type : Int32
Si la méthode réussit, elle retourne S_OK.En cas d'échec, un code d'erreur est retourné.

Notes

Un ensemble lié de phase de restauration suit la même opération d'annulation dans de plusieurs mémoires tampon.

Cette interface interroge un ensemble lié de phase de restauration pour permettre à chaque membre de l'ensemble pour déterminer si une opération d'annulation est interrompue.

Appelez cette méthode avant de tenter une phase de restauration liée pour éviter doivent annuler des opérations d'annulation liées retourner.

Remarques à l'attention des implémenteurs

Appliquez cette méthode pour le parent initial d'un ensemble lié de phase de restauration. Dans l'implémentation, interrogez chaque enfant et appel ActionWouldBeAborted de phase de restauration si les pensions alimentaires pour les enfants IVsQueryUndoUnit.

Exemples

Dans cet exemple de C++, le parent arrête de s'interroger si tout enfant retourne la valeur true :

STDMETHODIMP
CParentUndoUnit::ActionWouldBeAborted
(
   BOOL *pbWouldBeAborted // [out] Would the action be aborted?
)
{
    HRESULT hr = S_OK;
    if ( pbWouldBeAborted == NULL )
    {
        hr = E_POINTER;
    }
    else
    {
        *pbWouldBeAborted = FALSE;
        // Loop over child units for edit actions
        CEditNode *pNode = m_pEditFirst;
        while (pNode && SUCCEEDED(hr))
        {
            if (pNode->m_pEditUnit)
            {
                CComQIPtr<IVsQueryUndoUnit, &IID_IVsQueryUndoUnit> srpQueryUndoUnitForUserAbort(pNode->m_pEditUnit);
                if ( srpQueryUndoUnitForUserAbort )
                {
                    hr = srpQueryUndoUnitForUserAbort->ActionWouldBeAborted(pbWouldBeAborted);
        // If any action would be aborted, stop looking
                    if ( SUCCEEDED(hr)  &&  *pbWouldBeAborted == TRUE )
                    {
                        break;
                    }
                }
            }
            pNode = pNode->m_pNext;
        }
    }
    return hr;
}

Sécurité .NET Framework

Voir aussi

Référence

IVsQueryUndoUnit Interface

Microsoft.VisualStudio.TextManager.Interop, espace de noms

IVsLinkedUndoTransactionManager

Autres ressources

Comment : Gestion de annulation liée par utilisation