Task.Run()中的Aync / Await操作

Task.Run(()=>{})将操作委托放入队列并返回任务。 在Task.Run()中使用async / await有什么好处吗? 我知道Task.Run()是必需的,因为如果我们想直接使用await,那么调用方法将需要成为Async并且会影响调用的地方。 以下是在Task.Run()中具有异步等待的示例代码。 完整示例如下: https : //msdn.microsoft.com/en-us/library/hh228607(v = vs.110).aspx Task.Run(async () => { await new WebClient().DownloadStringTaskAsync(“”);}); 或者这可以做到, Task.Run(() => new WebClient().DownloadStringTaskAsync(“”).Result;); 由于Task.Run()和Await都将对工作进行排队并将被线程池选中,因此Task.Run()中的async / await是否有点多余?

将IList 转换为BindingList

如何将IList列表转换为BindingList ?

一个简单的PDF查看器窗体

我想在一些查看器控件中显示一个pdf文件,只需定义其路径,而无需安装Adobe Acrobat Reader。 这有什么开源控件吗? (用c#)

如何在scriptcs csx脚本中定义扩展方法

我正在使用ScriptCS (这很棒!)但我无法弄清楚如何在.csx脚本文件中定义扩展方法 。 举个例子: using System.IO; public static class Extensions { public static string Remove(this string source, params string[] toRemove) { foreach(var r in toRemove) { source = source.Replace(r,””); } return source; } } string[] entries = Directory .GetFiles( @”C:\Users\blah\blah”, “*.mp4”, SearchOption.AllDirectories) .Select( p => p.Remove(“Users”)) .ToArray(); foreach(var e in entries) { Console.WriteLine(e); } 这会产生错误: […]

为什么不调用Task .Result死锁?

几个月前阅读这篇文章之后,我变得很擅长获取Task的Result ,并且通过ConfigureAwait(false)或Task.Run不断地将所有调用包裹Task.Run 。 但是,由于某种原因,以下代码成功完成: public static void Main(string[] args) { var arrays = DownloadMany(); foreach (var array in arrays); } IEnumerable DownloadMany() { string[] links = { “http://google.com”, “http://microsoft.com”, “http://apple.com” }; using (var client = new HttpClient()) { foreach (var uri in links) { Debug.WriteLine(“Still here!”); yield return client.GetByteArrayAsync(uri).Result; // Why doesn’t this deadlock? } […]

我的C#项目中的循环引用

我有以下情况: 一个项目MyCompany.MyProject.Domain ,它包含我的域模型和部分类(如Contact )。 我希望’扩展’(通过部分类,而不是扩展方法)我的Contact类具有属性Slug ,它将为我提供一个简单的URL友好文本表示的名字和姓氏。 我在我的Utility项目MyCompany.MyProject.Utilities有一个字符串扩展方法ToSlug() ,它完全符合我想要的2)。 问题:My Utility项目已经引用了我的Domain项目,这意味着我无法让Domain项目看到Utility项目的ToSlug()方法而不会导致循环引用。 我并不热衷于创建另一个项目来解决这个问题,我真的希望保持Slug逻辑的共享。 我怎么解决这个问题?

WPF:实施MediaPlayer音频/video搜索器

我目前正在制作一个带有WPF MediaPlayer的MP3播放器(在WPF应用程序中),基本上,我想实现一个与当前播放歌曲一起移动的Song Seeker。 我已经实现了一个歌曲滑块(来自Sacha Barber的应用程序 ),当用户手动拖动导引头时(例如,歌曲从该位置继续),它可以工作但我无法弄清楚如何根据当前位置移动导引头这首歌曲。 麻烦的是我认为没有办法检查MediaPlayer的Position属性何时发生了变化,所以我对如何实现这个function感到难过。 关于如何解决这个问题的任何想法? [更新] 关于使用计时器增加导引头的问题,我实际上想到了使用我没有尝试过的原因,因为我认为使用MediaTimeline有更好的方法来实现MediaTimeline ……但我还没弄清楚如何。

winforms中的IDataErrorInfo

可以在winforms应用程序中正确使用IDataError信息吗? 在过去,我正在以通常的方式(1)进行绑定,并在特定控件的OnValidating事件中进行validation。 我想将数据validation移动到域模型,以便我可以轻松地交换用户界面,以便所有逻辑都在一个地方。 我正在研究IDataErrorInfo,但我发现的所有内容都与WPF有关,开发中的应用程序严格来说是一个winforms应用程序。 我还注意到在WPF中使用的绑定是在System.Windows.Data中,我一直使用的绑定是在System.Windows.Forms中(当我尝试添加它时,我似乎没有作为一种资源 – 我正在使用3.5)。来自属​​性“ValidatesOnDataErrors”的两者之间有区别吗? (1)通常的方式是: myControl.DataBindings.Add(new Binding(“Text”, this.domainModel, “Property”));

如何实例化List 但T在运行时才知道?

假设我有一个在运行时才知道的类。 在运行时,我得到一个引用类型为x的引用,引用到Foo.GetType()。 只有使用x和List ,才能创建Foo类型的列表吗? 怎么做?

如何在输出之前修改整个ASP.NET页面内容?

我有一个页面上有一堆用户控件。 我希望能够在我的代码中替换的内容中直接使用“宏”或“占位符”。 这应该不重要,但我使用Ektron作为我的CMS。 是否有任何页面事件可以挂钩到整个呈现的页面内容上进行字符串替换,就在它被发送到客户端之前? UPDATE 这是我目前用来完成此任务的代码: protected override void Render(HtmlTextWriter writer) { string content = string.Empty; using (var stringWriter = new StringWriter()) using (var htmlWriter = new HtmlTextWriter(stringWriter)) { // render the current page content to our temp writer base.Render(htmlWriter); htmlWriter.Close(); // get the content content = stringWriter.ToString(); } // replace our placeholders string newContent […]