Questions tagged «.net-4.5»

Microsoft .NET Framework的4.5版。用于与.NET Framework 4.5特别相关的问题。通常,对于.NET Framework的问题,请使用.net标记。

7
异步/等待-什么时候返回Task vs void?
在什么情况下您想使用 public async Task AsyncMethod(int num) 代替 public async void AsyncMethod(int num) 我能想到的唯一情况是您是否需要任务以跟踪其进度。 另外,在以下方法中,async和await关键字不是必需的吗? public static async void AsyncMethod2(int num) { await Task.Factory.StartNew(() => Thread.Sleep(num)); }

12
是否必须在请求之间处理HttpClient和HttpClientHandler?
.NET Framework 4.5中的System.Net.Http.HttpClient和System.Net.Http.HttpClientHandler实现IDisposable(通过System.Net.Http.HttpMessageInvoker)。 该using声明文件说: 通常,使用IDisposable对象时,应在using语句中声明并实例化它。 此答案使用以下模式: var baseAddress = new Uri("http://example.com"); var cookieContainer = new CookieContainer(); using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer }) using (var client = new HttpClient(handler) { BaseAddress = baseAddress }) { var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("foo", "bar"), new …

3
您是否必须将Task.Run放入一个使它异步的方法中?
我试图以最简单的形式理解异步等待。为了这个示例,我想创建一个非常简单的方法,将两个数字相加,这是完全没有时间的,这只是在此处举例说明而已。 例子1 private async Task DoWork1Async() { int result = 1 + 2; } 例子2 private async Task DoWork2Async() { Task.Run( () => { int result = 1 + 2; }); } 如果我等待DoWork1Async(),代码将同步还是异步运行? 是否需要包装同步代码Task.Run以使该方法可以等待和异步,以免阻塞UI线程? 我试图弄清楚我的方法是a Task还是return Task<T>,是否需要包装代码Task.Run以使其异步。 我确定是愚蠢的问题,但我在网上看到的示例中,人们正在等待代码,这些代码中没有异步内容并且没有包装在Task.Runor中StartNew。

7
C#中“返回等待”的目的是什么?
有没有这样的编写方法的场景: public async Task<SomeResult> DoSomethingAsync() { // Some synchronous code might or might not be here... // return await DoAnotherThingAsync(); } 代替这个: public Task<SomeResult> DoSomethingAsync() { // Some synchronous code might or might not be here... // return DoAnotherThingAsync(); } 会有意义吗? return await当您可以直接Task<T>从内部DoAnotherThingAsync()调用返回时,为什么要使用struct? 我return await在很多地方都看到过代码,我想我可能错过了一些东西。但是据我了解,在这种情况下不使用async / await关键字,而直接返回Task的功能是等效的。为什么要增加额外await层的额外开销?
251 c#  .net  .net-4.5  async-await 

10
等待具有不同结果的多个任务
我有3个任务: private async Task<Cat> FeedCat() {} private async Task<House> SellHouse() {} private async Task<Tesla> BuyCar() {} 它们都需要先运行,然后我的代码才能继续,我也需要它们的结果。没有结果有什么共同点 如何调用并等待3个任务完成然后获得结果?

6
Task.Start / Wait和Async / Await有什么区别?
我可能会丢失一些东西,但是这样做之间有什么区别: public void MyMethod() { Task t = Task.Factory.StartNew(DoSomethingThatTakesTime); t.Wait(); UpdateLabelToSayItsComplete(); } public async void MyMethod() { var result = Task.Factory.StartNew(DoSomethingThatTakesTime); await result; UpdateLabelToSayItsComplete(); } private void DoSomethingThatTakesTime() { Thread.Sleep(10000); }

5
从.Net 4.0到4.5的重新定位解决方案-如何重新定位NuGet包?
我已经将当前在VS2010中将.NET 4.0定位到VS2012的解决方案迁移了,现在我想将其重新定位到.Net 4.5 我不确定的是NuGet软件包。例如我从VS2010中的EF4更新而来的EF5,实际上是EF 4.4,如下所示: <Reference Include="EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath> </Reference> 我还可以在packages.config中看到以下项目: <?xml version="1.0" encoding="utf-8"?> <packages> <package id="EntityFramework" version="5.0.0" targetFramework="net40" /> </packages> 所以我的问题是: 将当前已设置为目标.NET 4.0的所有NuGet包重新目标为.NET 4.5的最佳实践是什么?

2
为什么要找到类型的初始化程序会引发NullReferenceException?
这让我难过。我正在尝试优化Noda Time的一些测试,其中我们进行了一些类型初始化程序检查。我以为在将所有内容加载到new之前,先要确定类型是否具有类型初始值设定项(静态构造函数或带有初始值设定项的静态变量)AppDomain。令我惊讶的是,NullReferenceException尽管我的代码中没有空值,但对此进行了一次小小的测试。仅当编译时没有调试信息时,它才会引发异常。 这是一个简短但完整的程序来演示该问题: using System; class Test { static Test() {} static void Main() { var cctor = typeof(Test).TypeInitializer; Console.WriteLine("Got initializer? {0}", cctor != null); } } 以及编译和输出记录: c:\Users\Jon\Test>csc Test.cs Microsoft (R) Visual C# Compiler version 4.0.30319.17626 for Microsoft (R) .NET Framework 4.5 Copyright (C) Microsoft Corporation. All rights reserved. …

1
Catch-22防止WIF可保护的流式TCP WCF服务;破坏圣诞节,精神健康
我需要使用WIF保护流式WCF net.tcp服务端点。它应该根据我们的令牌服务器对传入的呼叫进行身份验证。该服务之所以流式传输是因为它旨在传输大量数据。 这似乎是不可能的。 而且如果我不能解决问题,我的圣诞节将会毁灭,我会在一个装满水槽的水里把自己喝死,而快乐的购物者会踩在我缓慢冷却的身体上。手提袋很认真,你们。 为什么这不可能呢?这是Catch-22。 在客户端上,我需要使用从令牌服务器获取的GenericXmlSecurityToken创建一个通道。没问题 // people around here hate the Framework Design Guidelines. var token = Authentication.Current._Token; var service = base.ChannelFactory.CreateChannelWithIssuedToken(token); return service.Derp(); 我说“没问题”吗?问题。实际上,NullReferenceException风格有问题。 我问框架,“兄弟,您是否还进行空检查?” 该框架是沉默的,因此我进行了分解,发现 ((IChannel)(object)tChannel). GetProperty<ChannelParameterCollection>(). Add(federatedClientCredentialsParameter); 是异常的来源,并且GetProperty调用正在返回null。那么,WTF?事实证明,如果我打开消息安全性并将客户端凭据类型设置为,IssuedToken则此属性现在存在于ClientFactory(提示:混蛋IChannel中没有等效的“ SetProperty”)。 <binding name="OMGWTFLOL22" transferMode="Streamed" > <security mode="Message"> <message clientCredentialType="IssuedToken"/> </security> </binding> 甜。没有更多的NRE。但是,现在我的委托人出生时有过错(仍然爱他,tho)。我仔细研究了WCF诊断程序(提示:让最坏的敌人在压垮他们并在他们之前开车之前,但在享受他们的女人和孩子的悲痛之前,先这样做),是因为服务器和客户端之间的安全性不匹配。 “ net.tcp:// localhost:49627 / MyService”不支持请求的升级。这可能是由于绑定不匹配(例如,在客户端而非服务器上启用了安全性)。 检查主机的诊断(再次:暗恋,开车,阅读日志,感叹),我认为这是对的 …
181 c#  wcf  .net-4.5  wif  nettcpbinding 

5
通过Visual Studio 2010定位.NET Framework 4.5
今天,我在计算机上安装了.NET Framework 4.5,希望能够从Visual Studio 2010中使用它,因为它只是一个较小的更新,不会对Visual Studio 2010造成问题。遗憾的是,我什至没有,甚至手动删除了某些4.0并添加相应的4.5程序集,导致原始4.0程序集仍在项目中被引用。 是否可以将Visual Studio 2010中的版本4.5定位为目标,如果是,则如何?我真的很想用丝带...


4
如何取消等待中的任务?
我正在玩这些Windows 8 WinRT任务,并且正在尝试使用以下方法取消任务,并且在某种程度上可以正常工作。确实会调用CancelNotification方法,这使您认为任务已被取消,但是在后台任务继续运行,然后在完成后,任务的状态始终为完成且从未取消。取消任务后,是否有办法完全停止任务? private async void TryTask() { CancellationTokenSource source = new CancellationTokenSource(); source.Token.Register(CancelNotification); source.CancelAfter(TimeSpan.FromSeconds(1)); var task = Task<int>.Factory.StartNew(() => slowFunc(1, 2), source.Token); await task; if (task.IsCompleted) { MessageDialog md = new MessageDialog(task.Result.ToString()); await md.ShowAsync(); } else { MessageDialog md = new MessageDialog("Uncompleted"); await md.ShowAsync(); } } private int slowFunc(int …

4
异步/等待与BackgroundWorker
在过去的几天中,我测试了.net 4.5和c#5的新功能。 我喜欢它的新异步/等待功能。之前,我曾使用BackgroundWorker通过响应UI在后台处理更长的进程。 我的问题是:有了这些不错的新功能之后,什么时候应该使用async / await以及什么时候使用BackgroundWorker?两者都有哪些常见方案?

8
是否可以等待事件而不是其他异步方法?
在我的C#/ XAML Metro应用程序中,有一个按钮可以启动一个长期运行的过程。因此,按照建议,我使用async / await来确保UI线程不会被阻塞: private async void Button_Click_1(object sender, RoutedEventArgs e) { await GetResults(); } private async Task GetResults() { // Do lot of complex stuff that takes a long time // (e.g. contact some web services) ... } 有时,GetResults中发生的事情可能需要其他用户输入才能继续。为了简单起见,假设用户只需单击“继续”按钮。 我的问题是:如何以等待事件的方式暂停GetResults的执行诸如单击另一个按钮之类? 这是实现我要寻找的方法的丑陋方式:“继续”的事件处理程序”按钮设置了一个标志... private bool _continue = false; private void …

6
.NET Framework 4.5目录在哪里?
我已经安装了Windows 8,Visual Studio 2012,但其中没有v4.5目录%WINDIR%\Microsoft.NET\Framework。 我做错了什么,还是.NET 4.5与众不同? 如果是因为我尚未安装工具,那么是否有一组可供下载的其他工具?据我所知,我能够构建.NET 4.5应用程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.