Язык

ScriptTask.SuspendRequired Свойство

Определение

Получает или устанавливает булевое значение, указывающее, следует ли задаче приостанавливать выполнение при столкновении с точкой остановки. Это значение задаётся движком выполнения для задач и контейнеров при обнаружении точки остановки.

public:
 property bool SuspendRequired { bool get(); void set(bool value); };
public bool SuspendRequired { get; set; }
member this.SuspendRequired : bool with get, set
Public Property SuspendRequired As Boolean

Значение свойства

верно, если задача приостанавливает выполнение при столкновении с точкой остановки; в противном случае — ложь.

Реализации

Примеры

Следующий пример кода показывает, как переопределить свойство SuspendRequired для пользовательской задачи.

public bool SuspendRequired   
{  
     get  
    {   
        // m_suspendRequired is a Private integer declared in the custom task.   
        return m_suspendRequired != 0;   
    }  

    set  
    {  
    // This lock is also taken by Suspend().  Because it is possible for the package to be   
    // suspended and resumed in quick succession, this property "set" might happen   
    // before the actual Suspend() call.  Without the lock, the Suspend() might reset   
    // the canExecute event after we set it to abort the suspension.   
         lock (this)   
    {  
        Interlocked.Exchange(ref m_suspendRequired, value ? 1 : 0);   
            if (!value)   
                ResumeExecution();   
    }  
}  
Public ReadOnly Property SuspendRequired() As Boolean  
    Get   
        ' m_suspendRequired is a Private integer declared in the custom task.   
        Return m_suspendRequired <> 0  
     End Get  

Public WriteOnly Property SuspendRequired() As Boolean  
    Set (ByVal Value As Boolean)   
        ' This lock is also taken by Suspend().  Because it is possible for the package to be   
        ' suspended and resumed in quick succession, this property "put" might happen   
       ' before the actual Suspend() call.  Without the lock, the Suspend() might reset  
       ' the canExecute event after we set it to abort the suspension.   
         lock (Me)  
         {  
               Interlocked.Exchange(m_suspendRequired, value ? 1 : 0)   
                     If Not value Then  
                       ResumeExecution()  
                     End If  
             }  
         End Set  
End Property  

Комментарии

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

Однако, если вы пишете многопоточную пользовательскую задачу, которая открывает точки остановки, необходимо предоставить код для этого метода, который унаследован от IDTSSuspend класса для многопоточных объектов. Если ваша задача однопоточная, то есть реализация Execute в вашей пользовательской задаче не запускает новые потоки, вам не нужно реализовывать этот интерфейс. Для получения дополнительной информации о написании кастомных задач см. раздел «Разработка пользовательской задачи».

Применяется к