Tag: async ctp

ASP.NET WebApi中的Fire-forget和单向调用

我完全理解HTTP世界不是单向调用的最佳选择,WebApi最适合HTTP冗长通信。 毫无疑问,WCF是这里的赢家。 但是,如果你已经有一个暴露了一堆动词的ApiController怎么办呢?在某些时候你也需要一个单向调用呢? 并且您不希望为此托管/维护另一个服务(WCF)。 Task response = client.PostAsJsonAsync(“api/log”, log) 如果您没有处理响应,那么您将获得类似于“即发即忘”的内容。 这是WebApi中的唯一方法还是另一种解决方案?

Async CTP是否可以与便携式库一起使用

我正在寻找带有便携式类库的Async CTP?

异步CTP错误 – 任务永远不会完成

首先是道歉:我无法将以下错误隔离到一个简单的控制台应用程序中。 但是,在我相对简单的ASP.NET Web窗体应用程序中,以下代码将导致当前线程无限期地阻塞: public class MyModule : IHttpModule { public void Dispose() { } public void Init(System.Web.HttpApplication context) { context.BeginRequest += this.Context_BeginRequest; } private void Context_BeginRequest(object sender, EventArgs e) { Sleep().Wait(); var x = 2; // This line is never hit. } private async Task Sleep() { await TaskEx.Run(() => System.Threading.Thread.Sleep(1000)); } } 任务状态仍然是’WaitingForActivation’。 有谁知道为什么会这样?

将Async CTP与可移植类库一起使用

我正在尝试将项目重写为可移植类库。 但问题是它使用的是Async CTP,我无法将其编译为WP和Windows Store App的库。 如果我不包含引用AsyncCtpLibrary.dll,编译器会说 名称空间’System.Threading’中不存在类型或命名空间名称’Tasks’(您是否缺少程序集引用?) 如果我包含它,编译器仍会说相同的错误并添加警告: 无法解析主要引用“AsyncCtpLibrary”,因为它对框架程序集“mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”具有间接依赖性,这在当前目标框架中无法解析。 ” .NETPortable,版本= V4.0,外形= Profile104″ 。 要解决此问题,请删除引用“AsyncCtpLibrary”或将应用程序重新定位到包含“mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”的框架版本。 我该怎么忍受?

为什么异步CTP性能不佳?

我真的不明白为什么await和async不会像我们想象的那样改善我的代码的性能。 虽然持怀疑态度,但我认为编译器应该重写我的方法,以便下载并行完成……但似乎并没有真正发生。 ( 我确实认识到await和async不会创建单独的线程;但是,操作系统应该在parallal中进行下载,并在原始线程中回调我的代码 – 不应该吗? ) 我是否使用async并await不正确? 使用它们的正确方法是什么? 码: using System; using System.Net; using System.Threading; using System.Threading.Tasks; static class Program { static int SumPageSizesSync(string[] uris) { int total = 0; var wc = new WebClient(); foreach (var uri in uris) { total += wc.DownloadData(uri).Length; Console.WriteLine(“Received synchronized data…”); } return total; } static async Task […]

如何编写简单的异步方法?

使用最新的CTP5和async / await关键字,我写了一些代码,显然无法编译: class Program { public class MyClass { async public Task Test() { var result = await TaskEx.Run(() => { Thread.Sleep(3000); return 3; }); return result; } } static void Main(string[] args) { var myClass = new MyClass(); //The ‘await’ operator can only be used in a method or lambda marked with the […]

如何在没有Async CTP的情况下实现等待

您将如何实现与Async CTP await关键字类似的function? 是否存在一个简单的实现,在所有情况下都像await一样,或者是否需要针对不同场景的不同实现?

代码契约和异步

将后置条件添加到返回Task异步方法的推荐方法是什么? 我已阅读以下建议: http://social.msdn.microsoft.com/Forums/hu-HU/async/thread/52fc521c-473e-4bb2-a666-6c97a4dd3a39 post建议将每个方法实现为同步,签约,然后将异步对应实现为简单的包装器。 不幸的是,我不认为这是一个可行的解决方案(也许是通过我自己的误解): 异步方法虽然被假定为同步方法的包装器,但是没有任何真正的代码契约,因此可以按照自己的意愿进行。 致力于异步的代码库不太可能为所有内容实现同步对应。 因此,实现包含await其他异步方法的新方法因此被强制为异步。 这些方法本质上是异步的,不能轻易转换为同步。 它们不仅仅是包装纸。 即使我们通过说我们可以使用.Result或.Wait()而不是await (这实际上会导致某些SyncContext死锁,并且无论如何都必须在异步方法中重写.Wait()来使后一点无效,我我仍然坚信第一点。 有没有其他想法,或者有什么我错过的代码合同和TPL?

.NET 4相当于Task.WhenAll()

在.NET 4中,是否有任何function等同于.NET 4.5的System.Threading.Tasks.Task.WhenAll() ? 目标是将多个异步任务包装成一个在完成所有组成任务时完成的任务。

异步递归在C#(async ctp / .net 4.5)中是否安全?

在C#with async ctp或vs.net 2011 beta中,我们可以编写这样的递归代码: public async void AwaitSocket() { var socket = await this.AcceptSocketAsync(); //await socket and >>return<< to caller AwaitSocket(); //recurse, note that the stack will never be deeper than 1 step since await returns.. Handle(socket); // this will get called since "await" returns } 在此特定示例中,代码异步等待tcp套接字,一旦被接受,它将递归并且异步等待另一个。 这似乎工作正常,因为await部分将使代码返回到调用者,因此,不会导致堆栈溢出。 这里有两个问题: 如果我们忽略了我们在这个样本中处理套接字的事实。 以这种方式进行堆栈自由递归是否可以? 还是有缺点我不见了? 从IO的角度来看,上面的代码是否足以处理所有传入的请求? 我的意思是只是等待一个,一旦它被接受开始等待另一个。 […]