Tag: asynchronous

如何在可撤销的asynchronous/等待处置TransactionScope?

我正在尝试使用新的asynchronous/等待function与数据库asynchronous工作。 由于一些请求可能是冗长的,我希望能够取消它们。 我遇到的问题是, TransactionScope显然有一个线程亲和力,似乎取消任务时,它的Dispose()运行在一个错误的线程。 特别是,当调用.TestTx()我得到以下AggregateException在task.Wait ()上包含InvalidOperationException : "A TransactionScope must be disposed on the same thread that it was created." 代码如下: public void TestTx () { var cancellation = new CancellationTokenSource (); var task = TestTxAsync ( cancellation.Token ); cancellation.Cancel (); task.Wait (); } private async Task TestTxAsync ( CancellationToken cancellationToken ) { using ( […]

如何推迟或asynchronous此WordPress的JavaScript代码段加载最后更快的页面加载时间?

我有各种各样的javascripts是必要的插件在我的WordPress域之一,我知道在哪里从它的PHP文件调用。 为了加快页面加载速度,我正在采取一切措施,networking上的每个速度testing者都会尽可能推迟javascript的使用。 我已经阅读了关于defer ='defer'和javascript中的asynchronous函数,我认为其中的一个将完成我正在努力完成的任务。 但我不知道如何在一个PHP文件中这样做。 例如,这里是一个特定的插件的PHP文件的JavaScript代码文件被调用的代码片段: function add_dcsnt_scripts() { wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'dcsnt', dc_jqsocialtabs::get_plugin_directory() . '/js/jquery.social.media.tabs.1.7.1.min.js' ); } 我读过最好做这样的事情,以加快页面加载时间: <script defer async src="…"></script> 但是我不知道如何在php文件中完成这个任务。 我想用我所有的JavaScript文件做到这一点。 我将如何完成延期或asynchronous此JavaScript代码片段加载最后加快页面加载时间 ? 什么是增加所有浏览器的页面加载时间的理想方法? 感谢任何人可以提供的任何指导!

在哪里定义基于任务的asynchronous方法的callback

在这个问题之后 ,我尝试使用TPL实现asynchronous方法,并尝试遵循TAP准则。 我希望我的asynchronous方法在完成时执行callback。 据我所知,有三种方法可以做到这一点。 1)在我的任务委托中手动callback public Task DoWorkAsync(DoWorkCompletedCallback completedCallback) { return Task.Factory.StartNew( { //do work //call callback manually completedCallback(); }); } 2)在任务委托中为任务分配callback public Task DoWorkAsync(DoWorkCompletedCallback completedCallback) { return Task.Factory.StartNew( { //do work } ).ContinueWith(completedCallback); //assign callback to Task } 3)将呼叫分配给主叫方的任务 public Task DoWorkAsync() { return Task.Factory.StartNew( { //do work }); } public void SomeClientCode() { […]

Web Worker处理AJAX调用 – 优化过度杀毒?

我正在处理使用Web Workers处理所有AJAX请求的代码(如果可用)。 这些工作者几乎没有什么比XMLHttpRequest对象处理(没有额外的计算)。 所有由worker创build的请求都是asynchronous的( request.open("get",url,true) )。 最近,我得到了关于这个代码的几个问题,我开始怀疑是否应该花时间修复这个问题,或者只是抛出整个解决scheme。 到目前为止,我的研究表明,这个代码实际上可能会损害性能。 但是,我无法find任何可信的来源支持这一点。 我唯一的两个发现是: 2岁的jQueryfunctionbuild议使用networking工作者进行AJAX调用 这个 SO问题似乎要求一些有点不同(在networking工作者与AJAX调用中使用同步请求) 有人能指点我一个可靠的来源讨论这个问题? 或者,有没有可能消除我疑惑的基准? [ 编辑 ]当WebWorker也负责parsing结果( JSON.parse )时,这个问题会变得更有趣。 asynchronous分析是否改善性能?

为什么存在async关键字

通过频道浏览9 msdnvideo我发现了以下未答复的评论,并希望有人可以解释它? 我没有得到asynchronous关键字的重点。 为什么不只是在方法返回Task时只允许await关键字,就像迭代器可以返回任何返回IEnumerable的方法一样。 我相信有一个很好的理由,我只想明白为什么上述build议是不可能的。

Spring @Async不工作

@Service -annotated类中的@Async方法不是asynchronous调用 – 它阻塞了线程。 我在我的configuration文件中有<task: annotation-driven /> ,并且对该方法的调用来自于类之外,所以代理应该被击中。 当我遍历代码时,代理确实被击中了,但是它似乎并没有到任何与任务执行器中运行相关的类中。 我已经在AsyncExecutionInterceptor放置了断点,并且它们永远不会被击中。 我已经debugging到AsyncAnnotationBeanPostProcessor并可以看到得到应用的build议。 这个服务被定义为一个接口(在@Async方法中注释的方法是很好的方法),实现的方法注解@Async 。 两者都没有标记@Transactional 。 任何想法可能出了什么问题? – = UPDATE = – 奇怪的是,它只在我的app-servlet.xml文件中有我的task XML元素,而不是在我的app-services.xml文件中,以及如果我从那里做服务的组件扫描。 通常我只有一个XML文件,其中只有控制器(并相应地限制组件扫描),另一个XML文件包含服务(同样,组件扫描受限制,使得它不会重新扫描其他加载的控制器文件)。 APP-servlet.xml中 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:webflow="http://www.springframework.org/schema/webflow-config" xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd" > <task:annotation-driven executor="executor" /> <task:executor id="executor" pool-size="7"/> <!– Enable […]

CancellationToken的默认参数

我有一些asynchronous代码,我想添加CancellationToken。 然而,有很多不需要的实现,所以我想有一个默认参数 – 也许是CancellationToken.None。 然而, Task<x> DoStuff(…., CancellationToken ct = null) 产量 types''的值不能用作默认参数,因为没有标准转换来键入'System.Threading.CancellationToken' 和 Task<x> DoStuff(…., CancellationToken ct = CancellationToken.None) “ct”的默认参数值必须是编译时常量 有没有什么办法来取消CancellationToken的默认值?

JavaScriptasynchronous编程:承诺vs生成器

Promise和生成器允许您编写asynchronous代码。 我不明白为什么这两种机制都是在ECMA脚本6中引入的。什么时候最好使用promise,什么时候使用generator?

嵌套callback的Java模式?

我正在寻找一个Java模式来进行非阻塞方法调用的嵌套序列。 在我的情况下,一些客户端代码需要asynchronous地调用一个服务来执行一些用例,而这个用例的每一步必须是asynchronous执行的(因为这个问题的范围之外的原因)。 想象一下,我有现有的接口,如下所示: public interface Request {} public interface Response {} public interface Callback<R extends Response> { void onSuccess(R response); void onError(Exception e); } Request和Response接口有不同的配对实现,即RequestA + ResponseA (由客户端提供), RequestB + ResponseB (由服务内部使用)等。 处理stream程如下所示: 在收到每个响应和发送下一个请求之间,需要进行一些额外的处理(例如根据任何以前的请求或响应中的值)。 到目前为止,我已经尝试了两种使用Java编码的方法: 匿名类:由于所需的嵌套,很快变得丑陋 内部类:比上面更清晰,但是对于另一个开发者来说仍然难以理解执行的stream程 有没有一些模式,使这个代码更具可读性? 例如,我是否可以将服务方法表示为一个自包含操作的列表,由依赖嵌套的框架类按顺序执行?

将同步代码包装到asynchronous调用中

我在ASP.NET应用程序中有一个方法,需要花费很多时间才能完成。 根据用户提供的caching状态和参数,在一次用户请求期间,对此方法的调用最多可能发生3次。 每个通话需要大约1-2秒钟才能完成。 该方法本身是对服务的同步调用,并且不可能覆盖实现。 所以对服务的同步调用看起来如下所示: public OutputModel Calculate(InputModel input) { // do some stuff return Service.LongRunningCall(input); } 方法的用法是(注意方法的调用可能会发生一次以上): private void MakeRequest() { // a lot of other stuff: preparing requests, sending/processing other requests, etc. var myOutput = Calculate(myInput); // stuff again } 我试图从我身边改变执行,以提供这种方法的同时工作,这是我到目前为止。 public async Task<OutputModel> CalculateAsync(InputModel input) { return await Task.Run(() => { return […]