2013-04-28 73 views
0

我在一个序列化对象实现使用Web服务已经工作,数据将通过一个桌面应用程序我去的web服务跟随操作执行消耗和正常工作:为什么反序列化不起作用?

 [WebMethod] 
     public byte[] getPartners() 
     { 
      string[] strFiles = Directory.GetFiles(GlobalStatic.rootAppData + @"\partners"); 

      List<DentalSock.main.partner> _partners = new List<DentalSock.main.partner>(); 
      foreach (String str in strFiles) 
      { 
       DentalSock.main.partner ptn = new DentalSock.main.partner(); 
       ptn.readPartner(str.Replace(GlobalStatic.rootAppData + @"\partners\", "").Replace(".xml", "")); 
       _partners.Add(ptn); 
      } 

      BinaryFormatter bf = new BinaryFormatter(); 
      MemoryStream ms = new MemoryStream(); 
      bf.Serialize(ms, _partners); 
      return ms.ToArray();     
     } 

然后,当我回到客户端消费者我称之为web服务对象序列化到一个通用的列表下面的代码:

 ServiceReference1.partnerSoapClient p = new ServiceReference1.partnerSoapClient(); 
     byte[] byteArray = p.getPartners(); 
     MemoryStream stream = new MemoryStream(byteArray, 0, byteArray.Length); 
     stream.Write(byteArray, 0, byteArray.Length); 

     BinaryFormatter bf = new BinaryFormatter(); 

     pList = (List<partner>)bf.Deserialize(stream); 

一切似乎很好地工作,但在反序列化方法被调用没有最后一行发生,没有例外,当我试着调试器进入调试器时模式时,黄色突出显示的行到达上面的代码的最后一行只是停止并显示窗口的形式! 请帮助这个原因我不明白!

回答

0

该代码现在工作得非常酷,我所做的就是将所有代码放在背景工作者的DoWork事件之下,然后在窗体的Load事件上调用RunWorkerAsync()方法,并且所有事情都开始顺利进行它可能与主线程有关。