如果我可以访问我知道只会返回一个项目的IObservable,这是否有效并且它是最好的使用模式?
IDisposable disposable = null;
disposable = myObservable.Subscribe(x =>
{
DoThingWithItem(x);
if (disposable != null)
{
disposable.Dispose();
}
});
Run Code Online (Sandbox Code Playgroud) 你有没有理由在这个布尔属性的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) 我的表单中有一个项目列表,其名称如下...
<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中访问这些我只知道设计时前缀的值?
我正在尝试分析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) 我读了很多.Net资源告诉我,我应该使用线程池线程,而不是自己实例化一个新线程.他们说你应该这样做,因为实例化一个新线程是一项昂贵的操作.在创建线程期间会发生什么变得昂贵的操作?
如果直到运行时我不知道T是什么,我可以将对象从类型转换object为MyType<T>使用反射吗?
c# ×3
.net ×2
asp.net-mvc ×1
clr ×1
generics ×1
locking ×1
modelbinders ×1
properties ×1
reflection ×1
threadpool ×1
wpf ×1