WF 4.0 связывается с хостом, когда пользовательская активность запускает событие - PullRequest
1 голос
/ 03 марта 2011

Я создаю приложение WF 4.0, которое редактирует некоторые файлы, а затем копирует их в другой каталог.Некоторые файлы большие - от 1 до 4 гигабайт.Поэтому я хотел бы вернуть пользователю ход выполнения копирования.

Я использую платформу Microsoft Sync для копирования файлов, и возникает событие, которое содержит процент, скопированный для файла.

Я не могу найти прямой способ сообщить это обратнохосту, помимо предоставления услуги - и это кажется излишним.

Я довольно новичок в WF4.0, так что, возможно, я переглянул что-то действительно очевидное, но после многих поисков я не могу найти прямолинейногорешение.

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 04 марта 2011

Вы должны взглянуть на Расширения экземпляра рабочего процесса .Вы создаете класс, который реализует интерфейс IWorkflowInstanceExtension и добавляете метод для отправки уведомлений о ходе выполнения:

class MyExtension : IWorkflowInstanceExtension
{
    IEnumerable<Object> GetAdditionalExtensions()
    {
        return null;
    }

    void SetInstance(WorkflowInstanceProxy instance)
    { }

    public void SetProgress(int progress)
    {
        // implementation of your method can communicate with the user
    }
}

Перед запуском рабочего процесса вы добавляете расширение на свой хост, например, WorkflowApplication:

myWorkflowApplication.Extensions.Add(myExtension);

Внутри действия вы можете получить доступ к этому расширению и вызвать его методы для отправки информации о ходе выполнения из рабочего процесса:

context.GetExtension<MyExtension>().SetProgress(progress);
...