我构建了一个编辑某些文件的WF 4.0应用程序,然后复制到另一个目录。有些文件很大 - 在1-4个演出的范围内。所以我想将复制进度反馈给用户。
我使用Microsoft Sync框架来复制文件,它有一个触发事件,其中包含为文件复制的百分比。
除了提供服务之外,我找不到直接的方式将此信息传达给主人 - 这看起来有点过分。
我是WF4.0的新手,所以我可能已经看了一些非常明显的东西,但经过大量的搜索后我找不到直接的解决方案。
感谢任何帮助。
答案 0 :(得分:2)
你应该看看Workflow Instance Extensions。您创建了一个实现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);