Share via


MessageQueueTask.SuspendRequired Property

Gets or sets a Boolean that indicates if the task should suspend when it encounters a breakpoint. This value is set by the runtime engine for tasks and containers when a breakpoint is encountered.

Namespace:  Microsoft.SqlServer.Dts.Tasks.MessageQueueTask
Assembly:  Microsoft.SqlServer.MSMQTask (in Microsoft.SqlServer.MSMQTask.dll)

Syntax

public bool SuspendRequired { get; set; }

Property Value

Type: System.Boolean
true if the task suspends when it encounters a breakpoint.

Implements

IDTSSuspend.SuspendRequired

Remarks

The property is not set in code. It is set by the runtime for tasks and containers when a breakpoint is encountered.

However, you will need to provide code for this method, which is inherited from the IDTSSuspend class, if you write a multi-threaded custom task that exposes breakpoints. If your task is single threaded, which means that your implementation of Execute in your custom task does not start new threads, you do not need to implement this interface. For more information on writing custom tasks, see Developing a Custom Task.

Examples

The following code example is an example of an overridden SuspendRequired property for a custom task.

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

    set
    {
    // This lock is also taken by Suspend().  Since 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 (this) 
    {
        Interlocked.Exchange(ref m_suspendRequired, value ? 1 : 0); 
            if (!value) 
                ResumeExecution(); 
    }
}