问题标签 [iasyncresult]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - 将多个 HTTP 请求等待同一个 I/O 完成端口
我的应用程序从 Web 服务和“Application_Start”异步加载大量信息。
如果用户请求想要使用该信息,并且它还没有准备好,则线程将被 Monitor.Wait 阻塞。当信息准备好后,缓存对象会Monitor.Pulse所有等待的线程。这应该没问题,因为信息需要十几秒钟,并且必须将用户重定向到登录页面,发布登录信息,然后再次重定向。
问题是 Monitor.Wait 会阻塞 CLR ThreadPool 线程,据我所知,如果有大量请求到达要求“大信息”,应用程序可能会被 CLR ThreadPool 饥饿阻塞(我有点乱与当前的 IIS/ASP.NET 线程门控)。
由于大部分信息来自我异步调用的 Web 服务,因此我拥有该操作的 IAsyncResult。
那么,有没有办法告诉 CLR ThreadPool 线程“等待这个 IOCP”,以便线程池线程可以开始参加其他调用?
我觉得这没有得到很好的解释,如果不清楚我在问什么,请告诉我。
问候。
PS:虽然赏金已经结束,但如果有人知道如何做到这一点,我会提出一个新的并授予作者。
iasyncresult - 使用 IAsyncResult 和 AsyncCallback 调用多个 WCF 服务
我有一个网页 MyWebPage.aspx,它在加载时必须显示来自两个 web 服务的数据以及它自己的算法。
现在,当我同步调用它时,加载需要 10+10+5 = 25 秒。
所以,有人建议我使用“异步调用方法”,即使用 IAsyncResult/AsyncCallback。现在将(应该)发生的是所有将同时调用并且页面将在最多 10 秒内加载。
所以我现在以“开始/结束”的方式称呼他们......
现在上面示例的问题是 MyLabelI 和 MyLabelII 文本从未设置,因为页面在 5 秒后加载
并且线程被释放。通过写入 EventLog 来检查两个结束方法都被正确调用。我该如何解决这个问题......像“所有都立即开始,然后都等到所有完成......”我知道如果我的执行线程再等待 5 秒,那么代码将按要求执行..
我应该如何使用 AsyncWaitHandle...
.net - 取消异步操作
我正在开发一个实现协议栈的类库。那里我有一个异步操作 DoSomething 实现 IAsyncResult。此方法的用户可以使用 BeginDoSomething 和 EndDoSomething。这么长时间以来,这是一项相当普遍的任务。
现在我得到了使异步操作可中止的要求。我可以想到几种方法来实现这一点,但我不确定哪一种是最好的:
- 除了 BeginDoSomething 和 EndDoSomething 之外,还有一个 CancelDoSomething 方法。这不是常见的 asaync 模式,因此操作的用户不容易发现。
- 根据没有。1:有一个 Cancel 属性
- BeginDoSomething 返回的 IAsyncResult 实例可以强制转换为 DoSomethingAsyncResult。DoSomethingAsyncResult 有一个 Cancel 方法。同样,这不是异步模式的常见用法,对于类库的“普通用户”来说几乎不知道。
- 根据没有。3:有一个 Cancel 属性
- BeginDoSomething 返回的 IAsyncResult 实例实现了 IAbortableAsyncResult:
public IAbortableAsyncResult:IAsyncResult { void Abort(); }
。对我来说,这似乎是最优雅的方式。当用户使用 BeginDoSomething 开始操作时,他会得到一个 IAbortableAsyncResult 的实例,这意味着向他突出介绍了这个特殊功能。
什么是最好的解决方案?还有更多的方法可以解决这个问题吗?我更喜欢不。5 因为它没有代码味道(至少我直到现在才认出)。
[编辑]
一种不依赖于 TPL/.NET 4 的方法值得赞赏,因为它有一个解决方案,它也适用于无法移植到最新版本的 .NET 框架的遗留代码。
[/编辑]
c# - AsyncWaitHandle.WaitOne 会阻塞 CLR 线程吗?或者它是否创建了一个 I/O 完成端口?
我有这个问题,会AsyncWaitHandle.WaitOne
阻塞 CLR 线程吗?还是创建一个 I/O 完成端口?
例如,当我运行我的应用程序时,我启动了一个初始化一些数据的任务“A”,当新请求到达时,我希望他们等到“A”完成,所以我可以做一个IAsyncResult.AsyncWaitHandle.WaitOne
,但是......它会阻塞吗调用线程直到“A”结束,或者它是否创建了一个 I/O 完成端口,当“A”完成时也会通知该端口。
如果没有,有没有办法做到这一点?
问候。
javascript - 节点和懒惰:我怎么知道它什么时候完成?
我需要逐行读取文件,并相应地更改变量。我通常会用 PHP 编写这个......但我决定接受挑战。
我写:
除了代码非常丑陋且未优化之外,我遇到了问题,因为当最后一行打印时,“软件”变量尚未填充!我猜 Lazy 是异步的。所以,它基本上可以工作,但“在以后的某个时候”。这很好,但是......当填充软件变量的重要循环实际上完成时,我在哪里编写代码?!?
根据要求:要玩的数据!
只需创建“something.txt”并编写:
默克。
.net - 在异步 WCF 代理上调用 EndSomeMethod
我在 WCF 代理上有一个返回 void 的方法。如果 return 是 non-void,我需要调用相应的 End... 方法来获取结果,但是如果 return 是 void 怎么办?
例如:
我只是传递一个空回调然后从不调用EndSaveConfiguration
,代理会坚持一些事情还是最终进入一个奇怪的状态?
c# - 传递给回调未更新的值
使用IAsyncResult模式,我正在实现异步操作。
我的调用开始的签名是:
调用callbackMethod时,它具有数据对象作为输入。field1 var 旨在在 SendMessageToSystem 内部进行修改,但callbackMethod将接收原始值,而不会收到更新的值。
我怎样才能通过回调更新的值?
谢谢!
c# - 为什么列表是空的?
我可以从其类中访问列表 ( ListData ) 值,但如果我尝试从类外部引用该列表,它会将其显示为一个空列表。
我在 getVideoList 方法中将对象添加到 ListData。
我添加了这段代码,它现在可以工作了(轮询方法),这效率低吗?
c# - IAsyncResult 未完成并锁定 UI
我正在进行 REST 调用,服务器端响应采用 XML 的形式。我正在异步进行此调用。我已经将它作为控制台应用程序进行了测试,它可以正常工作。但是,当我在XBOX上测试它时,异步请求永远不会完成。我的 processVideo 方法解析 XML 并将项目放入列表中。我需要从另一个类中引用这个列表,所以我添加了(result.IsCompleted == false) 以确保在我引用和使用列表之前完成异步调用。似乎异步请求永远不会完成并锁定 UI,有什么想法吗?
c# - 通过 C# 中具有 WebRequest WebResponse 的 IAsyncResult 确定错误
我正在开发一个 Windows Phone 应用程序。通常我会使用 aWebClient
但是,在这种特定情况下,我被告知我需要使用 a HttpWebRequest
。我可以成功触发请求。但是,有时它会失败。由于网络问题或服务器引发的异常。如何检测与该IAsyncResult
方法相关的错误?目前,我有以下内容:
除非出现错误,否则我的代码工作正常。我不确定如何检测错误。谢谢!