# IGraphDispatcher

<pre class="nacara-api__signature"><code><span class="tok-operator">[&lt;</span><span class="tok-type">Interface</span><span class="tok-operator">&gt;]</span>
<span class="tok-keyword">type</span> <span class="tok-type">IGraphDispatcher</span> <span class="tok-operator">=</span>
    <span class="tok-keyword">abstract</span> <span class="tok-keyword">member</span> <a class="tok-function" href="#post">Post</a> <span class="tok-punctuation">(</span><span class="tok-parameter">drain</span><span class="tok-punctuation">:</span> <span class="tok-type">Action</span><span class="tok-punctuation">)</span> <span class="tok-punctuation">:</span> <span class="tok-type">unit</span></code></pre>

| | |
|---|---|
| Assembly | `Ranvier` |

Wakes the graph when work arrives from another thread: `Post` receives a request to drain the graph's inbox.

The work stays in the inbox, and the dispatcher chooses the thread the drain runs on. Under `Guarded`, a drain
off the owning thread raises `InvalidOperationException` to the `Graph.Dispatch` caller and the work stays
queued. Under `Unchecked`, a dispatcher that drains off-thread, such as `ImmediateDispatcher`, runs graph code there.
Under `Serialised`, a drain that finds another thread inside the graph leaves the work for that thread's exit to post.

## Methods

<div class="nacara-api__entry" id="post">
<a class="nacara-api__anchor"
                           href="#post"
                           aria-label="Link to Post"
                           data-pagefind-ignore></a>
<div class="nacara-api__member">
<pre class="nacara-api__signature nacara-api__signature--hanging"><code><span class="tok-keyword">abstract</span> <span class="tok-keyword">member</span> <span class="tok-function">Post</span> <span class="tok-punctuation">(</span><span class="tok-parameter">drain</span><span class="tok-punctuation">:</span> <span class="tok-type">Action</span><span class="tok-punctuation">)</span> <span class="tok-punctuation">:</span> <span class="tok-type">unit</span></code></pre>
</div>
</div>
