Поделиться через


IVsQueryUndoUnit.ActionWouldBeAborted - метод

Запросы каждый член связанного набора отката для определения, является ли действие отката будет прервана.

Пространство имен:  Microsoft.VisualStudio.TextManager.Interop
Сборка:  Microsoft.VisualStudio.TextManager.Interop.8.0 (в Microsoft.VisualStudio.TextManager.Interop.8.0.dll)

Синтаксис

'Декларация
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

Параметры

  • pbWouldBeAborted
    Тип: Int32%

    [out] если будет прервано 1 (TRUE), действие отката. если значение 0 (FALSE) действий отката не будет прервана.

Возвращаемое значение

Тип: Int32
Если метод завершается успешно, возвращается S_OK.Если происходит сбой, возвращается код ошибки.

Заметки

Связанный набор отката отслеживает одну и ту же действие отката в нескольких буферах.

Запросы этого интерфейса связанный набор отката, чтобы каждый элемент набора для определения, является ли действие отката будет прервана.

Этот метод следует вызывать перед попыткой связанное во избежание отката откатить связанных действий отката.

Примечания для разработчиков

Используйте этот метод для первоначального родительского элемента связанного набора отката. В реализации, запросите каждый дочерний элемент отката и вызов ActionWouldBeAborted если пособия по ребенка IVsQueryUndoUnit.

Примеры

В этом примере C++, родительский останавливает запросить если какой-либо дочерний элемент возвращает значение 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;
}

Безопасность платформы .NET Framework

См. также

Ссылки

IVsQueryUndoUnit Интерфейс

Microsoft.VisualStudio.TextManager.Interop - пространство имен

IVsLinkedUndoTransactionManager

Другие ресурсы

Практическое руководство. Использование связанных операций отмены