如何管理WCF线程和另一个线程之间的通信?

时间:2015-02-10 15:50:54

标签: c# .net multithreading wcf events

我正在开发一个简单的应用程序,它应该能够使用插件架构处理不同的任务,因此每个插件都是一个DLL库文件,并包含一个实现提供的接口的类,如下所示。

public interface ITaskProcessor
{
    void Execute(FileStream input, FileStream output);
}

我认为只有输入文件存在时才会调用某个插件的Execute方法,所以我在插件架构中创建了以下类。

public class TaskProcessorContext
{
    private ITaskProcessor TaskProcessorInstance;

    // ...

    void Execute(string inputDataFilename, string outputDataFilename)
    {
        using (FileStream input = File.OpenRead(inputDataFilename), output = new FileStream(outputDataFilename, FileMode.Create))
        {
            this.TaskProcessorInstance.Execute(input, output);
        }
    }
}

我的应用程序的整体功能应该提供BasicHttpBinding Web服务接收包含任务的文件以及应该处理任务的插件的唯一名称:

  • 收到的文件暂时存储在特定目录中,然后Web服务应通知文件写入完成,以便任务可以排队等待执行;
  • 标识符与任务相关联,因此可以知道其处理状态,例如使用Dictionary;
  • 当任务完成或者在处理过程中遇到错误时,应将这些事件通知给Web服务。

如何在WCF服务和处理任务的线程之间管理此通信?

0 个答案:

没有答案