I've run into a situation where I've noticed a SendReply message is not actually sent until a subsequent Delay activity (or another Send) is run in my CPU-intensive workflow.
Long story short, I'm testing out my "Cancel" ability by having one workflow (Controller) call into another (Worker), who will be performing some CPU-intensive operations. Sometimes, depending on some condition, the Controller will want to Cancel the Worker. I'm doing this by calling Cancel(...) on the Worker host's WorkflowControlEndpoint to forcefully stop the workflow and it's processing.
My workflows are hosted in WCF and look something like this:
var Controller = new Sequence
ReceiveResponseFromWorker, //ReceiveReply (for above)
SendCancelIfConditionMet, //If that may call WF control endpoint
var Worker = new Sequence
View Complete Post