我目前是在做一个动态DNS管理的程序,基本功能都可以实现,但是在更新的时候遇到问题,如果DNS中的二级域名数量很大的时候,更新DNS的速度就会变得很慢比如:如果DNS里面有100个二级域名,那么在进行二级域名更新的时候大概1秒就可以更新10个二级域名;如果DNS里面是有10000个二级域名的时候,那更新的时候速度就会降为每秒1个左右,速度下降得很厉害更新域名函数的代码如下:
/// <summary>
/// 调用WMI修改对象
/// </summary>
/// <param name="sTableName">WMI的表名</param>
/// <param name="sFieldName">对应关键字(如OwnerName)</param>
/// <param name="sFieldValue">二级域名名称</param>
/// <param name="MethodName">方法</param>
/// <param name="oParams">传入的参数</param>
protected void ModifyWMI(string sTableName, string sFieldName, string sFieldValue, string MethodName, Hashtable oParams)
{
string sQuery = String.Format("SELECT DnsServerName,OwnerName,RecordData,DomainName,TextRepresentation,ContainerName,IPAddress,RecordClass,TTL FROM {0} WHERE {1} = '{2}'", sTableName, sFieldName, sFieldValue); ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(this.DnsScope, new ObjectQuery(sQuery));
ManagementObjectCollection oCollection = oSearcher.Get(); foreach (ManagementObject oObject in oCollection)
{
ManagementBaseObject oInParams = oObject.GetMethodParameters(MethodName);
foreach (string sKey in oParams.Keys)
{
oInParams[sKey] = oParams[sKey];
}
oObject.InvokeMethod(MethodName, oInParams, null);
}
}主要问题可能是出在ManagementObjectCollection oCollection = oSearcher.Get();这句里面,这是一个异步调用的过程,在这里花了不少时间现在就是不知道有没有什么办法可以解决这个问题,提高速度