问题标签 [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.

0 投票
2 回答
294 浏览

.net - 关于确保在 IAsyncResult 对象列表上调用 EndInvoke() 的两个问题

所以这个问题是关于 .Net IAsyncResult 设计模式和调用的必要性,EndInvoke问题所述

背景

我有一些代码,我可能会触发对特定函数的许多异步调用,然后等待所有这些调用完成,然后再使用EndInvoke()来取回所有结果。

问题 1

在我调用之前,我不知道是否有任何调用遇到异常EndInvoke(),如果其中一个调用发生异常,则整个方法应该失败并且异常被包装到 API 特定异常中并向上抛出。

所以我的第一个问题是确保其余异步调用正确终止的最佳方法是什么?

finally调用EndInvoke()其余未终止调用(并忽略任何进一步的异常)的块是最好的方法吗?

问题2

其次,当我第一次启动所有 asyc 调用时,我会调用从我WaitHandle.WaitAll()的实例中获得的实例数组。触发所有这些异步调用的方法需要遵守超时,因此我将其提供给该方法。然后我测试是否所有调用都已完成,如果没有,则必须达到超时,因此该方法也应该失败并抛出另一个 API 特定异常。WaitHandleIAsyncResultWaitAll()

所以我的第二个问题是在这种情况下我应该怎么做?

在抛出错误之前,我需要调用EndInvoke()以终止所有这些异步调用,但同时我不希望代码因为阻塞而被卡住EndInvoke()。理论上,至少如果WaitAll()调用超时,那么所有异步调用本身都应该超时并抛出异常(从而完成调用),因为它们也受超时控制,但这个超时可能与主超时不同

0 投票
1 回答
110 浏览

.net - 我可以使用委托的单个实例来启动多个异步请求吗?

BeginInvoke只是想知道当您想要进行多个异步调用时是否有人可以澄清在某个委托的实例上的使用,因为 MSDN 文档根本没有真正涵盖/提及这一点。

我想做的是如下所示:

问题是我可以使用委托的一个实例来执行此操作,还是每次调用都需要一个委托的实例?

鉴于EndInvoke()将 aIAsyncResult作为参数,我会假设前者是正确的,但我在文档中看不到任何指示任何一种方式的内容。

0 投票
2 回答
406 浏览

c# - 在 BeginInvoke 调用期间,@object 参数指的是什么?

在 BeginInvoke 线程池方法的示例使用中:

BeginInvoke 中的预期参数之一(最后一个)是:

@ 表示什么?

谢谢,

斯科特

0 投票
3 回答
339 浏览

c# - 帮我用 GPS 解决这个线程问题

我有一个 GPS 类,我显然用它来获取纬度和经度。

当 GPS 状态或位置发生变化时调用 UpdateData()。所以我确保纬度和经度都是有效的,然后我使 DataReady 布尔等于 true。

因此,我以相当 n00b 的方式使用此代码,其中我使用计时器(Windows 窗体的)并每 10 秒检查一次 getGPSCoordinates() 以查看是否找到有效位置(getGPSCoordinates() 不为空),如果没有,请执行其余代码。这是使用的,因为可能需要 10 秒到甚至 1 分钟才能获得清晰的 gps 信号。

所以虽然这很好用,但我知道这不是正确的方法。我认为整个 GPS 业务应该在一个单独的线程上进行,它应该通知主线程位置已更改并且数据已准备好。

有人能指出我处理这类业务的正确方法吗?我应该IAsyncResult用来通知主线程吗?

0 投票
1 回答
1308 浏览

c# - AsyncCallback 可以使用非静态委托吗?

我正在使用 .net 远程处理,通过异步函数调用来处理我当前项目的 ipc。

我遇到了一个问题,我希望客户:

  1. A同步请求信息
  2. 继续加载 GUI
  3. 当 ASynchronous 调用完成后,将其加载到 gui

我使用以下代码执行此操作

在上面的例子中,RecievedSomething在这个例子中必须是一个静态方法。这是为什么?如果我可以使这个函数成为非静态的,我可以加载我的 gui,一切都很好。

我的解决方案是让 RecievedSomething 触发我的 gui 订阅的静态事件。这很麻烦,因为它现在需要 2 个委托和一个事件来处理我的 1 个异步函数调用。

有没有办法让 AsyncCallback 与非静态函数一起工作?

谢谢!

0 投票
1 回答
922 浏览

c# - .net Remoting:检测服务器是否未运行

我正在开发一个使用 .net 远程处理 IPC 的应用程序。

当我的客户端应用程序启动时,它使用以下代码连接到服务器:

而且,当我进行函数调用时,我使用以下代码:

这段代码按原样工作得很好。但是,我希望我的客户端在启动时检测服务器是否正在运行,并显示相应的错误消息。

当服务器未运行时,客户端会等待大约 3 秒,然后抛出 Web 异常(显示在底部)。没有错误“位置”,所以我不确定在哪里放置 try\catch 块。

检测我的服务器未运行的最佳方法是什么?

谢谢!

0 投票
1 回答
340 浏览

c# - 传输失败的 WCF 服务 aync 模式反馈

我正在使用 Silverlight 4 并使用用于更新客户端的异步模式实现轮询双工服务。

我使用我定义的 RequestState 对象向客户端进行回调,以跟踪我发送到哪个连接的客户端。

我看不到使用回调中返回的 IAsyncResult 参数检查错误的任何方法。

所以我的问题是,如何判断消息是否发送失败?

0 投票
1 回答
2336 浏览

c# - vb.net 实现 IAsyncResult.AsyncState

我可以在 C# 中轻松地做到这一点......但我需要 VB.Net 中的等价物。我需要能够在 VB.Net 中实现各种 IAsyncResult 属性。

在 C#

像冠军一样工作...

在 VB.NET 中 - 这失败了

这失败了,因为您不能在 VB.Net 中重载属性

在 VB.NET 中 - 两者都失败了

这不符合“必须实现 IAsyncResult”的要求

0 投票
2 回答
208 浏览

c# - 第 2 次 BeginInvoke 调用声明已完成。为什么?

我用 BeginInvoke 反复调用一个方法。每次通话后,我都会调用 EndInvoke。

问题在于,对于第二次调用,返回的 IAsyncResult 中的 IsCompleted 成员在 BeginInvoke 调用之后立即设置为 true。

这会导致故障,因为程序会认为第二次调用已完成。

为什么会这样做,我如何检测第二次通话何时真正完成?

0 投票
1 回答
719 浏览

asp.net - 使用 IAsyncResult 更新更新面板中的 DataRepeater 不起作用!

我在使用 ISyncResult 时无法将数据绑定到数据转发器。这就是我正在做的事情。更新面板中有一个按钮,它从用户那里获取输入并调用一个函数,该函数返回一个数据集,然后我将其绑定到也在更新面板内的数据转发器。我所做的是我为这个函数做了一个委托,现在我像这样调用这个函数

然后我像这样制作一个 IASyncResult :

这是回调方法:

我很难弄清楚为什么数据转发器没有显示数据。在调试这个时,我看到数据集正在获取数据并传递“ds”,但我的页面上没有显示任何内容,即使在我调试时数据正在传递给数据转发器内部的控件。