是否有一种"标准"方式来指定任务延续应该在创建初始任务的线程上运行?
目前我有下面的代码 - 它正在工作,但跟踪调度程序和创建第二个动作似乎是不必要的开销.
dispatcher = Dispatcher.CurrentDispatcher;
Task task = Task.Factory.StartNew(() =>
{
DoLongRunningWork();
});
Task UITask= task.ContinueWith(() =>
{
dispatcher.Invoke(new Action(() =>
{
this.TextBlock1.Text = "Complete";
}
});
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的操作需要原子地完成:
if (a > b)
b = a
Run Code Online (Sandbox Code Playgroud)
其中a和b是整数
编辑:和一个是本地的.
有没有一种快速的方法在C#中做到这一点?如果可能的话,我想避免手动锁定.我看过Interlocked.CompareExchange,但据我了解,这只是测试是否相等.
谢谢!
我正在开发一个WPF应用程序,我必须根据其他视图模型(ChildModel)的集合对viewmodel(GroupedViewModel)进行分组.
视图模型和属性更改的集合:
ObservableCollection<ChildModel> chlidModelCollection;
//initialize child model
childModel.PropertyChanged += OnChildModelPropertyChanged
public void OnChildModelPropertyChanged(object sender,
PropertyChangedEventArgs args)
{
//try grouping GroupViewModel
//do some tasks which takes little over time
}
Run Code Online (Sandbox Code Playgroud)
由于Child Viewmodel有10个属性,因此对属性的任何更改都会调用OnChildModelPropertyChanged10次.对于集合中10个子模型的集合,OnChildModelPropertyChanged称为10*10 = 100次.这会影响性能.
对于子视图模型集合中的所有属性更改,是否有一种方法可以获取聚合或最终变更集.我错过了什么吗?