小编dev*_*zer的帖子

如何提高.NET中的WMI性能?

我继承了许多远程WMI调用的代码.当我反复暂停执行并查看调用堆栈时,它几乎总是在ManagementScope.Connect()通话中.每个WQL查询似乎都会建立一个新连接.

尽管试验和错误有限,但我还没有找到任何改善WMI调用性能的大赢家.

我已经尝试过缓存以前的结果,重用连接,并避免可怕的" select *".这些并没有给我带来我想要的性能提升.我有兴趣了解环境对WMI性能的影响,但代码需要在各种可能无法控制的环境中运行.

如果有的话,.NET中面向性能的WMI访问有什么作用和不做什么?

.net performance wmi wql

11
推荐指数
1
解决办法
4545
查看次数

基础通用接口的扩展方法

我正在实现一个流畅的构建器模式,它需要在静态扩展方法中接受可枚举并迭代其内容,同时将一个仿函数应用于可枚举的内容.如(不是实际代码,只是一个例子):

public static IValidator<IEnumerable<T>> Each<T>(
    this IValidator<IEnumerable<T>> enumerable, 
    Func<T, bool> action)
{
    foreach (T value in enumerable)
        action(value);

    return validator;
}
Run Code Online (Sandbox Code Playgroud)

这对于枚举非常有效,但对于继承的类型/接口则失败.让我们说:

IValidator<IEnumerable<Guid>> validator = ...;

IEnumerable<Guid> guids = ...;
validator.Each(guids, guid => guid != Guid.Empty);   // ok

IList<Guid> guids = ...;
validator.Each(guids, guid => guid != Guid.Empty);   // doesn't compile (see below)
Run Code Online (Sandbox Code Playgroud)

例外是:

IValidator<IList<Guid>>不包含'Each'的定义,也没有扩展方法'each'接受类型的第一个参数 IValidator<IList<Guid>>可以找到(你是否缺少using指令或汇编引用?

我的问题是关于继承链IValidator<T>,更具体地说,是它的泛型类型参数T.为什么类型IValidator<IEnumerable<T>>不可分配IValidator<IList<T>>?没有任何情况我可以想到哪个IList<T>不是IEnumerable<T>(给定相同T).

约束泛型参数T : IEnumerable<R>确实有效,但是如果可能的话,这需要两个我想避免的类型参数(T和 …

.net c# generics ienumerable extension-methods

5
推荐指数
1
解决办法
1638
查看次数

WCF可以在Win2k上运行吗?

在Win2k上支持WCF需要什么,或者至少最小化支持通过.Net与Win2k服务器进行远程通信的工作量?

背景:

我正在研究的产品有一个遗留的.NET远程实现,它已经被WCF取代,用于新的开发.遗留实现用作与WCF实施之前运行旧版本的服务器通信的后备.

销售已经要求Win2k支持,因为在Win2k上不支持.NET 3.0(因此可能是WCF),因此在某些方面留下了开发.我们希望以最少的额外开发工作来支持Win2k,但似乎为了支持Win2k,我们必须实现两次接口; 一次用于远程服务器的远程处理,一次用于WCF.

.net wcf remoting windows-server-2000

4
推荐指数
2
解决办法
547
查看次数