把你调WEBSERVICE那一部分写到线程里就行了

解决方案 »

  1.   

    单独开一个工作线程去执行WEBSERVICE,我想,楼主说的卡只是主窗体在执行 WEBSERVICE 从而得不到响应吧!
      

  2.   

    服务端是webSerivcse 写的,就是说服务器端默认就支持多用户操作。
    客户端是不是多线程的应该关系不大。如果要解决速度问题,除非把整个系统架构改为socket模式
    即:
       服务端为socket多线程的server
       客户端为socket的client另外,需要注意的是,并不见得完全是软件的问题,有可能是数据库的问题,网络环境的问题造成速度慢
      

  3.   

    主要是重webSerivcse 返回的数据量比较大 如果把 把数据库和webSerivcse 放在本地 执行速度是没问题的,, 我想如果线程解决不了这个问题能不能提点其他思路呢
      

  4.   

    2楼的大人就是思路啊……开一个专门的线程用于调用WebService,这样应该可以解决客户端卡的问题,但那并不是速度提高了……要想提高还要提高网速
      

  5.   

    多线程调用webservice有三种方法把,两个是用它自己提供的Async方法和Begin的方法,另外一个就是起个线程,执行webservice的方法
      

  6.   

    Thread myThread = new Thread( new ThreadStart(CallWebService));
    myThread.IsBackground = true;
    myThrad.Start()把调用webservice放到另外线程中执行
      

  7.   

    这个和多线程没关系把,webservice自己本身就有异步的操作,比如你的方法名为test,就会又个begintest的异步方法。
    或者也可以自己使用异步例如backgroundworkder来完成
      

  8.   

    各位大侠  是这样的      我的webService 在客户端是这样掉用   
      public class ServiceFunction
    {
    private  localhost.Service1 WebService = new ZSERP.localhost.Service1();//
    public ServiceFunction(string sUrl)//sUrl是webservice的地址
    {
    WebService.Url=sUrl;

    }
    public bool getUserPower(string sUserId, string sMoudle)//重写webService的方法
    {
    return WebService.getUserPower(sUserId,sMoudle);
    }
    }   ServiceFunction sf=new ServiceFunction(Conn.WebServiceAccount);// dsUser=sf.getUserPower(sUserId,sMoudle);//客户端调用webService的方法
                      static void Main() //入口函数
    {
    ZSERP.GlobalClass.frmMain = new frmZSERPMain();
    Application.Run( ZSERP.GlobalClass.frmMain  );
    }
    就是这样的设计模式  ,请问我该如何把webService 写到线程里去呢?  小弟我着急得很啊!!! 拜托各位前辈了这么来解决这个问题 ,非常感激!!!!
      

  9.   

    Web服务的调用本身就是异步的。这里就不要用了,用了问题会复杂化,还达不到效果。
    看看能不能对Web服务接口进行改善。
    1.尽量传递少的数据。
    2.尽量调用少的方法来完成接口功能访问。
      

  10.   

    公司使用soa框架,用的也是webservice,有时需要异步处理事情。
    不希望让界面执行一个服务后,死掉。
    不知道各位网友有什么高招?
    谢谢