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

C# 如何管理WCF线程和另一个线程之间的通信?,c#,.net,multithreading,wcf,events,C#,.net,Multithreading,Wcf,Events,我正在开发一个简单的应用程序,它应该能够使用插件体系结构处理不同的任务,因此每个插件都是一个DLL库文件,并包含一个实现所提供接口的类,如下所示 public interface ITaskProcessor { void Execute(FileStream input, FileStream output); } 我假设某个插件的Execute方法只有在输入文件存在时才会被调用,因此我在插件体系结构中创建了以下类 public class TaskProcessorContext

我正在开发一个简单的应用程序,它应该能够使用插件体系结构处理不同的任务,因此每个插件都是一个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服务应通知文件写入完成,以便任务可以排队等待执行; 标识符与任务关联,因此可以知道其处理状态,例如使用字典; 当任务完成或在处理过程中遇到错误时,应将这些事件通知web服务。
如何管理WCF服务和处理任务的线程之间的通信?

您需要一些额外的元素,以便接口报告状态和错误。这些可以是调用线程查询的事件或字段/属性的形式。@Kami:我可以向ITaskProcessor接口和TaskProcessorContext类添加一些事件,例如events OnTaskStarted、OnTaskException、OnTaskFinished。这些事件将在接口上,在引发时使用调用线程处理。它确实需要插件通过引发相关事件来实现一些附加功能。你不能这么做吗?@Kami:是的,我能这么做。另一个疑问涉及将从ITaskProcessor实例引发的事件转发到TaskProcessorContext实例:对于第二个疑问,我在中找到了答案。