在多线程控制台应用程序中调用WCF服务操作

时间:2012-12-29 14:11:43

标签: multithreading wcf c#-3.0

我有以下申请:

  1. 其Windows控制台.NET 3.0应用程序
  2. 我正在创建20个工作负载并将它们分配给线程池进行处理。
  3. ThreadPool中的每个线程都会创建WCF客户端,并使用分配的工作负载创建请求来调用服务。
  4. 有时在生产服务器[12台核心机器]上,我遇到以下异常:

    在使用WCF客户端调用操作时,出现了反映类型'xyz'的错误。这开始出现在所有线程中。一段时间后它突然消失并再次出现。

    代码:

    伪代码:

    for(int i=0;i<20;i++)
    {
    
    MultiThreadedProcess proc =new MultThreadedProcess(someData[i]);
    ThreadPool.QueueUserWorkItem(proc.CallBack,i);
    
    }
    

    在MultiThreadedProcess类中,我做了类似这样的事情:

    public void Callback(object index)
    {
    
    MyServiceClient client = new MyServiceClient();
    MyServiceResponse response =client.SomeOperation(new MyServiceRequest(proc.SomeData));
    client.close();
    //Process Response
    }
    

    有人可以为这个问题提出一些解决方案吗?

1 个答案:

答案 0 :(得分:0)

如果您可以启用诊断,在我看来是序列化问题,某些数据成员/值可能无法为操作调用正确反序列化。