Можете ли вы подтвердить, что вы спрашиваете? Вы выполняете долгосрочное задание в Диспетчере? Уничтожение потока нарушит модель CCR, поэтому вы должны иметь возможность дать сигнал потоку, чтобы он закончил свою работу и дал результат. Предполагая, что цикл завершается недостаточно быстро, вы можете поставить таймер в очередь:
var resultTimeoutPort = new Port<DateTime>();
dispatcherQueue.EnqueueTimer(TimeSpan.FromSeconds(RESULT_TIMEOUT),
resultTimeoutPort);
и убедитесь, что в блокирующем потоке есть ссылка на resultTimeoutPort. В цикле блокировки одним из условий выхода может быть:
do
{
//foomungus amount of work
}while(resultTimeoutPort.Test()==null&&
someOtherCondition)
Пожалуйста, напишите больше информации, если я лаю не на том дереве.