小编Noo*_*oob的帖子

反应性可观察认购出售事项

如果我可以访问我知道只会返回一个项目的IObservable,这是否有效并且它是最好的使用模式?

IDisposable disposable = null;
disposable = myObservable.Subscribe(x =>
  {
     DoThingWithItem(x);
     if (disposable != null)
     {
       disposable.Dispose();
     }
  });
Run Code Online (Sandbox Code Playgroud)

.net c# system.reactive

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

布尔属性Getter和Setter锁定

你有没有理由在这个布尔属性的getter和setter周围创建锁?

  private _lockObject = new object();
  private bool _myFlag;
  public bool MyFlag
  {
    get
    {
      lock (_lockObject)
      {
        return _myFlag;
      }
    }
    set
    {
      lock (_lockObject)
      {
        _myFlag = value;
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

c# multithreading locking properties

18
推荐指数
1
解决办法
7712
查看次数

Asp.Net MVC 2 - 在模型绑定器中迭代表单值

我的表单中有一个项目列表,其名称如下...

<input type="text" id="ListItem1" name="ListItem1">
<input type="text" id="ListItem2" name="ListItem2">
<input type="text" id="ListItem3" name="ListItem3">
Run Code Online (Sandbox Code Playgroud)

我想创建一个自定义模型绑定器,使用此结构将这些绑定器转换为模型...

public class MyModel
{
  public IEnumerable<MyModelItem> Items {get; set;}
}

public class MyModelItem
{
  public int Id { get; set; }
  public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

因此,每个ListItem应转换为MyModelItem,其id等于输入id末尾的数字,并将值设置为输入字段上的值.

在ASP.Net MVC 1.0中,我可以遍历bindingContext.ValueProvider.Keys集合并检查key.StartsWith("ListItem")以此格式查找所有输入项.

ASP.Net MVC 2中的新IValueProvider接口没有密钥集合,我无法迭代该接口. 如何在ASP.Net MVC 2中访问这些我只知道设计时前缀的值?

asp.net-mvc modelbinders

6
推荐指数
1
解决办法
2089
查看次数

查询Dispatcher队列长度

我正在尝试分析UI线程的用法.是否可以查询调度员排队的物品数量?

更新:克莱门斯的答案是完美的,但是因为我想在UI启动后启动它,我只关心每秒采样一次我使用以下代码...

        int queueLength = 0;
        var currentDispatcher = Dispatcher.CurrentDispatcher;
        currentDispatcher.Hooks.OperationPosted += (s, e) => Interlocked.Increment(ref queueLength);
        currentDispatcher.Hooks.OperationCompleted += (s, e) => Interlocked.Decrement(ref queueLength);
        currentDispatcher.Hooks.OperationAborted += (s, e) => Interlocked.Decrement(ref queueLength);
        Observable
            .Interval(TimeSpan.FromSeconds(1))
            .Subscribe(x =>
                           {
                               int currentQueueLength = queueLength;
                               if (currentQueueLength < 0)
                               {
                                   Interlocked.Add(ref queueLength, currentQueueLength * -1);
                               }
                               UiQueueLength = queueLength;
                           });
Run Code Online (Sandbox Code Playgroud)

wpf

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

为什么创建新线程昂贵?

我读了很多.Net资源告诉我,我应该使用线程池线程,而不是自己实例化一个新线程.他们说你应该这样做,因为实例化一个新线程是一项昂贵的操作.在创建线程期间会发生什么变得昂贵的操作?

.net clr multithreading threadpool

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

使用反射转换为通用类型对象

如果直到运行时我不知道T是什么,我可以将对象从类型转换objectMyType<T>使用反射吗?

c# generics reflection

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