当前位置:编程学习 > C#/ASP.NET >>

关于c#的多线程处理

是一个C/S模式的软件    客户端是C#写的 ,服务端是webSerivcse 写的  ,以前没用到多线程 ,只要网速稍微慢了  ,软件就卡起不动了


现在我想用多线程才解决这个问题(由于本人对多线程控制得不好 )  ,请大侠们能得点思路和建议  ,非常感谢 --------------------编程问答-------------------- 客户端卡就卡呗,多线程意义不大。

比如你提交一个单子,还没返回保存结果,你就打算去编辑别的单子么? --------------------编程问答--------------------
把你调WEBSERVICE那一部分写到线程里就行了 --------------------编程问答--------------------
引用 2 楼 heiying8510 的回复:
把你调WEBSERVICE那一部分写到线程里就行了

单独开一个工作线程去执行WEBSERVICE,我想,楼主说的卡只是主窗体在执行 WEBSERVICE 从而得不到响应吧! --------------------编程问答-------------------- 服务端是webSerivcse 写的,就是说服务器端默认就支持多用户操作。
客户端是不是多线程的应该关系不大。

如果要解决速度问题,除非把整个系统架构改为socket模式
即:
   服务端为socket多线程的server
   客户端为socket的client

另外,需要注意的是,并不见得完全是软件的问题,有可能是数据库的问题,网络环境的问题造成速度慢 --------------------编程问答-------------------- 主要是重webSerivcse 返回的数据量比较大 如果把 把数据库和webSerivcse 放在本地 执行速度是没问题的,, 我想如果线程解决不了这个问题能不能提点其他思路呢 --------------------编程问答-------------------- 对,是这样的 --------------------编程问答--------------------
引用 3 楼 maple0112 的回复:
引用 2 楼 heiying8510 的回复:

把你调WEBSERVICE那一部分写到线程里就行了 
 
单独开一个工作线程去执行WEBSERVICE,我想,楼主说的卡只是主窗体在执行 WEBSERVICE 从而得不到响应吧!


是这样的  ,那改怎么解决呢,我现在很郁闷啊,员工每天用这个系统都很头痛,网速快就没多大问题 --------------------编程问答-------------------- 2楼的大人就是思路啊……开一个专门的线程用于调用WebService,这样应该可以解决客户端卡的问题,但那并不是速度提高了……要想提高还要提高网速 --------------------编程问答-------------------- 多线程调用webservice有三种方法把,两个是用它自己提供的Async方法和Begin的方法,另外一个就是起个线程,执行webservice的方法 --------------------编程问答-------------------- Thread myThread = new Thread( new ThreadStart(CallWebService));
myThread.IsBackground = true;
myThrad.Start()

把调用webservice放到另外线程中执行 --------------------编程问答-------------------- 这个和多线程没关系把,webservice自己本身就有异步的操作,比如你的方法名为test,就会又个begintest的异步方法。
或者也可以自己使用异步例如backgroundworkder来完成 --------------------编程问答-------------------- web 本身就是多线程的 --------------------编程问答-------------------- 各位大侠  是这样的      我的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 写到线程里去呢?  小弟我着急得很啊!!! 拜托各位前辈了这么来解决这个问题 ,非常感激!!!!




--------------------编程问答-------------------- 学习 --------------------编程问答-------------------- Web服务的调用本身就是异步的。这里就不要用了,用了问题会复杂化,还达不到效果。
看看能不能对Web服务接口进行改善。
1.尽量传递少的数据。
2.尽量调用少的方法来完成接口功能访问。 --------------------编程问答-------------------- --------------------编程问答-------------------- 公司使用soa框架,用的也是webservice,有时需要异步处理事情。
不希望让界面执行一个服务后,死掉。
不知道各位网友有什么高招?
谢谢
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,