Tag: asynchronous

asynchronous的jdbc调用是可能的吗?

我想知道是否有办法对数据库进行asynchronous调用? 例如,假设我有一个需要很长时间处理的大请求,我想发送请求,并在请求返回一个值(通过传递一个监听器/callback或其他)时收到一个通知。 我不想阻止等待数据库回答。 我不认为使用线程池是一个解决scheme,因为它不扩展,在繁重的并发请求的情况下,这将产生大量的线程。 我们正面临networking服务器的这种问题,我们通过使用select / poll / epoll系统调用来find解决scheme,以避免每个连接有一个线程。 我只是想知道如何有一个类似的function与数据库请求? 注:我知道使用FixedThreadPool可能是一个很好的解决方法,但我很惊讶没有人开发出一个真正asynchronous的系统(没有使用额外的线程)。 **更新** 由于缺乏切实可行的解决scheme,我决定自己创build一个库(finagle的一部分): finagle-mysql 。 它基本上解码/解码MySQL的请求/响应,并使用Finagle / Netty下的。 即使有大量的连接,它也能很好地扩展。

什么是Node.js中的非阻塞或asynchronousI / O?

在服务器端Javascript引擎的上下文中,什么是非阻塞I / O或asynchronousI / O? 我认为这被认为是Java服务器端实现的一个优势。

很好的介绍.NET Reactive Framework

除了微软的文档,有没有一个很好的介绍和微软反应(Rx)框架的教程? 另外,Reactive是一个很好的例子(带有代码),使得使用传统的asynchronous编码技术难以解决的编程问题更容易解决。

ConfigureAwait将继续推送到池线程

这是一个WinForms代码: async void Form1_Load(object sender, EventArgs e) { // on the UI thread Debug.WriteLine(new { where = "before", Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread }); var tcs = new TaskCompletionSource<bool>(); this.BeginInvoke(new MethodInvoker(() => tcs.SetResult(true))); await tcs.Task.ContinueWith(t => { // still on the UI thread Debug.WriteLine(new { where = "ContinueWith", Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread }); }, TaskContinuationOptions.ExecuteSynchronously).ConfigureAwait(false); // on a pool thread […]

WebAPI中长时间运行的任务

这是我的问题:我需要在ApiController中调用多个第三方方法。 这些方法的签名是Task DoSomethingAsync(SomeClass someData, SomeOtherClass moreData) 。 我希望这些调用在ApiController将数据发送回客户端后在后台继续运行。 当DoSomethingAsync完成时,我想做一些日志logging,也许保存一些数据到文件系统。 我怎样才能做到这一点? 我宁愿使用asyny / await语法。

有什么办法来处理ASMX服务的asynchronous/等待?

我有一个Web应用程序,为JSON和ASMX Web服务提供WCF REST API。 该应用程序已经存在了几年。 它基于ASP.NET 2.0,但几年前升级到.NET 4.0,而我刚刚升级到.NET 4.5,以便能够使用新的asynchronous框架。 应用程序背后是一些传统服务,我意识到通过asynchronous提高性能有很大的潜力。 我已经通过应用程序实现了asynchronous,并且通过WCF REST API,一切都可以正常工作。 太迟了,我发现ASMX API失败,我想这样的方法: [WebMethod(Description = "Takes an internal trip ID as parameter.")] async public Task<Trip> GetTrip(int tripid) { var t = await Trip.GetTrip(tripid); return t; } 然后我知道ASMX不支持async / await,大家build议迁移到WCF。 我对此不太高兴。 ASMX(实际上是其中的三个)被填充了不同的方法,并且有大量的API消费者,我们希望继续从旧API提供服务。 但是我们需要提高性能! 有谁知道一个解决方法,所以我可以继续使用ASMX后面的asynchronous/等待,但像以前一样公开ASMX?

将事件转换为任务的可重用模式

我想有一个通用的可重用的代码包装EAP模式作为任务 ,类似于什么Task.Factory.FromAsync的BeginXXX/EndXXX APM模式 。 例如: private async void Form1_Load(object sender, EventArgs e) { await TaskExt.FromEvent<EventArgs>( handler => this.webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(handler), () => this.webBrowser.Navigate("about:blank"), handler => this.webBrowser.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(handler), CancellationToken.None); this.webBrowser.Document.InvokeScript("setTimeout", new[] { "document.body.style.backgroundColor = 'yellow'", "1" }); } 到目前为止,它看起来像这样: public static class TaskExt { public static async Task<TEventArgs> FromEvent<TEventArgs>( Action<EventHandler<TEventArgs>> registerEvent, Action action, […]

等待运营商只能在一个asynchronous方法内使用

我试图做一个简单的程序来testingVisual Studio 2012中新的.NETasynchronousfunction。我通常使用BackgroundWorkersasynchronous运行耗时的代码,但有时它似乎是一个相对简单的(但昂贵的)操作的麻烦。 新的asynchronous修改器看起来会很好用,但不幸的是,我似乎无法得到一个简单的testing。 这是我的代码,在C#控制台应用程序中: static void Main(string[] args) { string MarsResponse = await QueryRover(); Console.WriteLine("Waiting for response from Mars…"); Console.WriteLine(MarsResponse); Console.Read(); } public static async Task<string> QueryRover() { await Task.Delay(5000); return "Doin' good!"; } 我检查了一些MSDN上的例子,它看起来像这样的代码应该工作,但相反,我得到一个包含“await QueryRover();”行上的生成错误“ 我疯了还是有什么可疑的发生?

在catch block中等待

我有以下代码: WebClient wc = new WebClient(); string result; try { result = await wc.DownloadStringTaskAsync( new Uri( "http://badurl" ) ); } catch { result = await wc.DownloadStringTaskAsync( new Uri( "http://fallbackurl" ) ); } 基本上我想从URL下载,当它失败,我想从另一个URL下载的exception。 这两个时间当然是asynchronous的。 但是代码不能编译,因为 错误CS1985:不能等待catch子句的正文 好的,不论什么原因都是禁止的,但是这里的代码模式是什么? 编辑: 好消息是C#6.0可能允许在catch和finally块中等待调用 。

“UseTaskFriendlySynchronizationContext”的含义是什么?

在asp.net 4.5中有一个新的应用程序设置 <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 这样的代码可以在asp.net 4.0中运行 protected void Button1_Click(object sender, EventArgs e) { CallAysnc(); } public void CallAysnc() { AsyncOperation asyncOp = AsyncOperationManager.CreateOperation(Guid.NewGuid().ToString()); WebClient client = new WebClient(); client.DownloadStringCompleted += (object sender, DownloadStringCompletedEventArgs e) => { asyncOp.PostOperationCompleted(CallCompleted, e.Result); }; client.DownloadStringAsync(new Uri("http://www.google.com")); } private void CallCompleted(object args) { Response.Write(args.ToString()); } 但它不能在asp.net 4.5,当我删除新的appsetting,它再次工作! 那么“UseTaskFriendlySynchronizationContext”的含义是什么?