小编Ana*_*yal的帖子

SpinWait与睡眠等待.哪一个使用?

是否有效率

SpinWait.SpinUntil(() => myPredicate(), 10000)
Run Code Online (Sandbox Code Playgroud)

超时10000毫秒

要么

Thread.Sleep在相同条件下使用轮询是否更有效例如,以下SleepWait函数的行:

public bool SleepWait(int timeOut)
{
    Stopwatch stopwatch = new Stopwatch(); 
    stopwatch.Start();
    while (!myPredicate() && stopwatch.ElapsedMilliseconds < timeOut)
    {
       Thread.Sleep(50)
    }  
    return myPredicate()
}
Run Code Online (Sandbox Code Playgroud)

我担心如果我们谈论超过1秒的超时,SpinWait的所有收益可能都不是一个好的使用模式?这是一个有效的假设吗?

您更喜欢哪种方法?为什么?还有另一种更好的方法吗?


更新 - 变得更具体:

有没有办法让BlockingCollection Pulse在达到有界容量时成为睡眠线程?正如Marc Gravel建议的那样,我宁愿避免忙碌等待.

c# multithreading

70
推荐指数
2
解决办法
6万
查看次数

如何使用表达式设置属性值?

给出以下方法:

public static void SetPropertyValue(object target, string propName, object value)
{
    var propInfo = target.GetType().GetProperty(propName,
                         BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);

    if (propInfo == null)
        throw new ArgumentOutOfRangeException("propName", "Property not found on target");
    else
        propInfo.SetValue(target, value, null);
}
Run Code Online (Sandbox Code Playgroud)

如何编写它的表达式启用等效而无需为目标传递额外的参数?

为什么这样做而不是直接设置属性我可以听到你说.例如,假设我们有以下类,其属性具有公共getter但私有setter:

public class Customer 
{
   public string Title {get; private set;}
   public string Name {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我希望能够致电:

var myCustomerInstance = new Customer();
SetPropertyValue<Customer>(cust => myCustomerInstance.Title, "Mr");
Run Code Online (Sandbox Code Playgroud)

现在这里是一些示例代码.

public static void SetPropertyValue<T>(Expression<Func<T, Object>> memberLamda , object value)
{
    MemberExpression memberSelectorExpression; …
Run Code Online (Sandbox Code Playgroud)

c# linq expression

59
推荐指数
1
解决办法
4万
查看次数

我在哪里放置CSS,如何从母版页链接到它?

我已在服务器场模式下的单台计算机上安装SharePoint 2010,指向另一台服务器上的数据库.我想通过做一些我最初认为简单明了的事情,从SharePoint 2010母版页链接到自定义CSS,开始涉足品牌网站.

我已经使用站点资产中的SharePoint设计器上传了一个自定义css(我们称之为custom.css).我需要用什么语法链接到它?我尝试过以下方法:

<SharePoint:CssRegistration name="custom.css" After="corev4.css" runat="server"/> 
Run Code Online (Sandbox Code Playgroud)

但是服务器找不到CSS文件.我收到以下错误:

无法为"1033/styles/custom.css"创建缓存安全URL,找不到文件.请验证layouts目录下是否存在该文件.

  • 我假设我需要使用SharePoint:CssRegistration - 我的假设是否正确?
  • 那么我需要在name标签中链接到通过SharePoint设计器上传的css到底是什么?
  • 我是在正确的轨道上还是你会建议另一种方法将它放在一起?

css sharepoint-designer sharepoint-2010

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

相当于Bind <>.Unity中的ToMethod?

在Unity中是否有相当于Ninject Factory的方法?我正在寻找以下示例的统一等价物:

Bind<IWeapon>().ToMethod(context => new Sword());
Run Code Online (Sandbox Code Playgroud)

ninject unity-container

4
推荐指数
1
解决办法
502
查看次数