Спасибо! Это работает; как ни странно, рабочий процесс по-прежнему блокируется до завершения Track (). (Он вызывает методы Begin / End.) Похоже, мне нужно реализовать очередь, чтобы получить желаемое поведение. (Не отвлекайте от вашего правильного ответа!)
аюсь реализовать собственный TrackingParticipant для WF 4. Я могу написать метод Track, но моя реализация будет медленной.
Как я могу реализовать переопределения Begin / EndTrack, используя параллельную библиотеку задач (TPL) .NET 4.0? Я смотрел наTPL и традиционное .NET асинхронное программирование но я не уверен, как применить это здесь.
Обратите внимание, что TrackingParticipant является частью .NET и имеет классический асинхронный шаблон, предопределенный с помощью виртуальных методов.
public class MyTrackingParticipant : TrackingParticipant
{
protected override IAsyncResult BeginTrack(
TrackingRecord record, TimeSpan timeout,
AsyncCallback callback, object state)
{
// ?
}
protected override void EndTrack(IAsyncResult result)
{
// ?
}
protected override void Track(TrackingRecord record, TimeSpan timeout)
{
// synchronous code to be called
}
}