StrandTryExecuteTaskInline Method

Attempts to executes a task inline, but only if this method is called on the processing thread to avoid parallel execution of tasks.

Definition

Namespace: Gemstone.Threading.Strands
Assembly: Gemstone.Threading (in Gemstone.Threading.dll) Version: 1.0.110 -- Release Build+13c244059615c58a533059438f38d7e59ef0c2ea
protected override bool TryExecuteTaskInline(
	Task task,
	bool taskWasPreviouslyQueued
)

Parameters

task  Task
The Task to be executed.
taskWasPreviouslyQueued  Boolean
A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.

Return Value

Boolean
A Boolean value indicating whether the task was executed inline.

Remarks

Inline execution allows tasks to skip the line and run out of order. The only reason inline execution is supported at all is to avoid a common case of deadlocking where a task is queued in advance of another task that it depends on (via Wait, for instance). However, deadlocks can still occur when waiting on tasks scheduled by a different strand. To avoid out-of-order execution and deadlocks, be very careful about using API calls that wait on tasks.

See Also