当前位置: 代码迷 >> C# >> 多线程让线程等待的有关问题
  详细解决方案

多线程让线程等待的有关问题

热度:448   发布时间:2016-05-05 05:31:00.0
多线程让线程等待的问题。
 就是在服务器端 有一个窗口,可以添加这个服务器可以运行的任务数(自定义控件),然后这个任务的状态是写在xml文件里面的、从客户端来任务的时候,首先查找有多少服务器,然后查看某个服务器里面的任务是否有空闲状态的任务,如果有就让他占用这个任务,并且状态改为忙碌,这个任务执行完毕之后,把状态修改为空闲,并且返回计算的结果。。 但是现在的问题是,如果我在寻找的过程当中可能所有的服务器的所有任务都在执行,那么我应该让他在哪里等待呢?怎么等待。- -
  public void MendthCall(string[] args, int index)
        {       //获取服务器配置信息
            List<string> list = GetSeverConfig();
            //服务器调用方法
            RemotingServerConn conn = new RemotingServerConn();
            try
            {
                //循环服务器配置
                for (int i = 0; i < list.Count; i++)
                {
                    //连接服务器
                    MSS_ExecuteCOM.ExecuteCOM ec = conn.ServerConn(list[i]);
                    //查看服务器下是否有空闲的任务如果有取得该任务的句柄
                    string str = IsLeisureServer(ec);
                    //如果查找到空闲状态的任务
                    if (str != null && str.Trim() != "")
                    {
                        _ICOMcallback.OnExecuteComplete_Event += new ExecuteComplete_Event(ExecuteComplete_EventMethod);
                       //添加回掉实例
                        ec.AddOnlineCallBack(_ICOMcallback);
                        //判断传递来的数组是否存在句柄
                        if (index != -1)
                        {
                            //把获取到的任务句柄赋给这个数组
                            args[index] = str;
                            object obj = new object();
                            //锁定修改
                            lock (obj)
                            {
                                ec.UpdateXML(str, "忙碌");//修改当前句柄为忙碌状态
                            }
                        }
                        //执行
                        ec.ExecuteAsyncPreAndCal(args);
                        break;
                    }
                }
            }
            catch (Exception ex)
            {

            }
        }

------解决思路----------------------
你要自己实现负载均衡???
------解决思路----------------------
我看了你另外一个贴子,很明显你现在的思路完全停留在单线程处理上面
一个任务来了,不是把它先放到队列里,多线程并行处理,而是主线程直接想去处理,处理不了才开始纠结怎么把它"放下"

就好比你有一车砖要搬,你应该雇佣足够多的工人,给他们分工,有负责卸汽车的,有负责码垛的,有负责从堆里搬出一些来放到另一个推车上的,有负责推车的,有负责卸推车的,有负责再次码垛的

而你呢,你是汽车来了,然后你就开始自己动手搬,搬到地方发现没地方放,才开始想办法.
这不对
  相关解决方案