- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个正常的方法
public List<string> FindNearByCity(string targetCity)
{
// ... some implementation
}
我想为这个方法添加异步支持,所以我这样写:
public IAsyncResult BeginFindNearByCity(string targetCity, AsyncCallback callback, object obj)
{
Func<string, List<string>> method = FindNearByCity;
return method.BeginInvoke(targetCity, callback, obj);
}
public List<string> EndFindNearByCity(IAsyncResult result)
{
Func<string, List<string>> method = FindNearByCity;
return method.EndInvoke(result);
}
BeginFindNearByCity 工作正常,但是当涉及到 EndFindNearByCity 时,当它命中 EndInvoke 时会抛出异常。
我查看了自动生成异步 Web 服务方法,似乎我需要实现一些名为“ChannelBase”的东西
谁能给我指点一些更简单的东西,比如我可以看看的教程或示例?
谢谢
最佳答案
您在 EndXXX
方法中创建的委托(delegate)是您在 BeginXXX
方法中创建的委托(delegate)的单独实例,因此它不知道 IAsyncResult
,您将其传递给它的 EndInvoke()
方法。
您必须在 EndXXX
方法中使用与 BeginXXX
方法相同的委托(delegate),例如
public class Foo
{
private readonly Func<string, List<string>> method;
public Foo()
{
this.method = this.FindNearByCity;
}
public IAsyncResult BeginFindNearByCity(string targetCity, AsyncCallback callback, object obj)
{
return this.method.BeginInvoke(targetCity, callback, obj);
}
public List<string> EndFindNearByCity(IAsyncResult result)
{
return this.method.EndInvoke(result);
}
public List<string> FindNearByCity(string targetCity)
{
// ... some implementation
}
}
关于c# - 如何在异步方法中调用 EndInvoke,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8890489/
在网页上,我调用不允许我以编程方式设置超时的第三方。我调用 BeginInvoke 并使用 AsyncWaitHandle.WaitOne 等待指定的时间量。 如果调用超时,我会继续并忘记我开始的线程
一个异步问题: 我在互联网上阅读了大量支持和反对 Delegate.EndInvoke() 可选的文章。这些文章大多数都是 4-5 年前的文章。很多死链接。 任何人都可以解释一下,在 .NET 2.0
我有一个正常的方法 public List FindNearByCity(string targetCity) { // ... some implementation } 我想为这个方法添加异步支持
我不会做很多 Windows GUI 编程,所以对于比我更熟悉 WinForms 的人来说,这可能都是常识。不幸的是,我今天在调试期间遇到了任何资源来解释这个问题。 如果我们在异步委托(delegat
我读过几个论坛,甚至一两个stackoverflow问题都说在使用Delegate.BeginInvoke时Delegate.EndInvoke是必要的。我读过的许多谈论使用 BeginInvoke
所以 C#/.NET 问题。在使用 .BeginInvoke 异步调用某些方法时,是否总是需要调用 .EndInvoke?我在某处读到它是强制性的,但问题是 .EndInvoke 会阻止执行吗?有某种
我有一个显示实时值的客户端应用程序。这些值通过 DDE-Advise 提供。这些实时值是数控机床的移动轴。因此,通过此 DdeClientAdvise-Method,每分钟大约有 100 个建议。 当
在 BeginInvoke 之后的回调中,AsyncResult.AsyncDelegate 需要转换为正确的类型,然后才能访问 EndInvoke。 但是我正在使用泛型,那么我是否需要为 N 个泛化
以这种方式为 MainForm 线程调用委托(delegate)是一种好习惯吗?: Txt.MainForm.EndInvoke( Txt.MainForm.BeginInvoke( new
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicates: Must every BeginInvoke be followed by an EndInvoke? I
关于是否每个 BeginInvoke() 都必须与 EndInvoke() 匹配,我读过相互矛盾的意见。是否存在与不调用 EndInvoke() 相关的任何泄漏或其他问题? 最佳答案 Delegate
我有以下测试 [Test] public void aaa() { CallContext.LogicalSetData("aa", "1"); Action parallelMeth
我正在通过 ASP.net 自下而上地工作,并且我正在设置一个老式的委托(delegate)模式: public delegate void ProcessRequestDelegate(Ht
我正在通过 ASP.net 自下而上地工作,并且我正在设置一个老式的委托(delegate)模式: public delegate void ProcessRequestDelegate(Ht
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Why does asynchronous delegate method require calling
试图围绕 Tasks 类,更具体地说,Task.Factory.FromAsync 方法。 目前在我的代码中我正在做这样的事情: var handler = MyEvent; if (handler
我的 .aspx 文件中的这个方法... private static string GetPageAsString(string address) {
以下类为例。 public class A { // ... void Foo(S myStruct){...} } public class B { public A test;
为什么委托(delegate)需要在方法触发之前调用 EndInvoke?如果我需要调用 EndInvoke(它会阻塞线程)那么它不是真正的异步调用吗? 这是我要运行的代码。 class Progra
我想知道 BeginInvoke/EndInvoke 方法是如何在委托(delegate)上实现的。我知道它们是由编译器自动生成的,有点特殊,所以反汇编程序无法处理它们。但最终是代码被执行了,对吧?出
我是一名优秀的程序员,十分优秀!