Tag: c# 5.0

等待最后一个方法行

还在学习async-await。 我碰到了类似以下的例子: public async Task MethodAsync() { await Method01Async(); await Method02Async(); } 最后等待的目的是什么? Method02Async是MethodAsync方法的最后一行。 所以没有任何方法余数 – 下面没有任何行 – 在编译器生成的回调中没有任何东西要调用…我错过了什么吗?

限制任务并行库中的线程数

我有几百个文件需要上传到Azure Blob存储。 我想使用并行任务库。 但是,如何在foreach文件列表中运行所有100个线程上传,我如何限制它可以使用的最大线程数并并行完成作业。 还是自动平衡事物?

在任务运行时以另一种forms更新进度条

**最终,我将同时运行四个任务,并有另一个包含四个进度条的表单。 我想让每个进度条更新,因为它的工作任务正在完成。 这就是我要为初学者做的事情。 我有一个表格上有一些按钮。 当我点击一个我正在创建一个新任务来做一些工作。 public partial class MyMainForm : Form { private void btn_doWork_Click(object sender, EventArgs e) { Task task = new Task(RunComparisons); task.Start(); } private void RunComparisons() { int progressBarValue = 0; MyProgressBarForm pBar = new MyProgressBarForm(maxValue, “some text”); pBar.ShowDialog(); foreach(string s in nodeCollection) { //do some work here progressBarValue++; pBar.updateProgressBar(progressBarValue, “some new […]

确定setter中的调用者 – 或者静默设置属性

给定标准视图模型实现,当属性更改时,有没有办法确定更改的发起者? 换句话说,在下面的视图模型中,我希望“PropertyChanged”事件的“sender”参数成为调用Prop1 setter的实际对象: public class ViewModel : INotifyPropertyChanged { public double Prop1 { get { return _prop1; } set { if (_prop1 == value) return; _prop1 = value; // here, can I determine the sender? RaisePropertyChanged(propertyName: “Prop1”, sender: this); } } private double _prop1; // TODO implement INotifyPropertyChanged } 或者,是否可以将CallerMemberNameAttribute应用于属性设置器?

C#静态分析,变量/参数的可能值

在类似于以下每个示例的代码中,我希望能够静态分析代码以确定传递给SpecialFunction()的可能值列表。 SpecialFunction(5); // A int x = 5; SpecialFunction(x); // B int x = 5; x = condition ? 3 : 19; SpecialFunction(x); // C 我已经可以将C#解析成一个抽象语法树了,我已经可以处理像A这样的情况了,我想我可以跟踪值的初始赋值来猜测案例B,但像C一样简单的案例似乎很快就会变得复杂。 我几乎可以肯定,我们无法在所有情况下静态地解决x问题,这没关系。 我想知道尝试它的策略,以及识别何时无法完成的方法。 如果我们需要包含类级别字段和multithreading,该怎么办? 闭包? 如果我们知道x , |X| < 50的所有可能值的集合X ,它会有帮助吗? |X| < 50 ? 从@Vladimir Perevalov的建议来看,Pex中的概念如何应用于寻找目标代码点的可能值(而不是Pex似乎做的是发现代码路径和值导致未检查(?)exception情况)?

何时使用OrderByCompletion(Jon Skeet)和Parallel.ForEach与异步委托

最近,NDC伦敦的Jon Skeet谈到了C#5 async / await,并提出了“ 按完成排序 ”的想法,列出了异步任务。 链接http://msmvps.com/blogs/jon_skeet/archive/2012/01/16/eduasync-part-19-ordering-by-completion-ahead-of-time.aspx 我有点困惑,或者我应该说我不确定这种技术何时更适合使用。 我无法理解这个和下面的例子之间的区别 var bag = new ConcurrentBag(); Parallel.ForEach(myCollection, async item => { // some pre stuff var response = await GetData(item); bag.Add(response); // some post stuff } 或由Stephen Toub解释的ForEachAsync – http://blogs.msdn.com/b/pfxteam/archive/2012/03/05/10278165.aspx 编辑:发现一篇来自Stephen Toub的博客文章解释“按完成排序”“处理完成后的任务”。 值得阅读。 阅读本文后,我可以清楚地了解它的工作原理以及何时使用这种技术。

C#5异步/等待线程机制感觉不对?

为什么调用线程会进入异步方法直到内部’await’? 一旦调用异步方法就产生一个线程不是更清晰。 这样你就可以确定async方法立即返回。 您不必担心在异步方法的早期阶段没有做任何昂贵的事情。 我倾向于想知道一个方法是否会在’my’线程上执行代码。 是否阻止。 这种模式似乎打开了一系列中间可能性。 设计师比我聪明得多,所以我确信有充分的理由,我只是想了解它。

等待/异步与“经典”异步(回调)

所以新的异步CTP非常酷; 它使我的生活变得更加容易,不必编写命名的回调方法,并使方法的意图更加清晰。 现在我已经开始玩了一下,我想知道async / await和“经典”异步回调语法之间可能存在什么差异。 这里有一些我想到的问题,但是还有很多其他我现在都不会想到的,可能会在以后。 是否有人提供优于另一个的优越表现? 一个比另一个更大的开销是否存在? 哪个在高性能环境中使用会更好?

一个代码示例说明了async / await和Reactive(Rx)扩展的范例之间的区别?

两个系统。 .NET的react native扩展和新的C#5.0(.NET 4.5) async/await追求(或基于) future和promises构造范式(方法)。 你能给出(*)最简单的C#代码示例来说明它们之间的区别吗? (*) 没有I / O,互联网或数据库连接是否可能? 更新: 好吧,如果以前似乎回答了这个问题,让我重新制定一下。 为什么在使用本机.NET Iobservable / IObserver + await / async时会添加并开始使用.NET的Reactive(Rx)扩展? 有什么可能的例子说明Rx会在没有Rx的情况下做出同样更笨拙或效率更低的东西(即只使用原生的.NET Iobservable / IObserver + await / async方法)?

C#params明显的编译器bug(C#5.0)

这是我认为昨天解决的一个post的后续内容。 昨天我在以下情况下遇到了我的代码问题: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program { class Bar { int v; public Bar(int v) { this.v = v; } public override string ToString() { return v.ToString(); } } static void Main(string[] args) { Foo(1, 2, 3); Foo(new int[] { 1, 2, 3 }); Foo(new Bar(1), […]