就是在服务器端 有一个窗口,可以添加这个服务器可以运行的任务数(自定义控件),然后这个任务的状态是写在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)
{
}
}
------解决思路----------------------
你要自己实现负载均衡???
------解决思路----------------------
我看了你另外一个贴子,很明显你现在的思路完全停留在单线程处理上面
一个任务来了,不是把它先放到队列里,多线程并行处理,而是主线程直接想去处理,处理不了才开始纠结怎么把它"放下"
就好比你有一车砖要搬,你应该雇佣足够多的工人,给他们分工,有负责卸汽车的,有负责码垛的,有负责从堆里搬出一些来放到另一个推车上的,有负责推车的,有负责卸推车的,有负责再次码垛的
而你呢,你是汽车来了,然后你就开始自己动手搬,搬到地方发现没地方放,才开始想办法.
这不对