我不确定我是否可以在这里很好地解释它,但让我试一试。下面的代码只是为了展示这个想法,因为我只是在这里输入它而不验证编译器中的所有内容。
我有一个方法(比如 Method1),我正在做两件事。1. 调用 Web 服务方法来执行操作。2. 之后,我轮询同一个 Web 服务对象以等待操作结果可用。
所以基本上如下所示。
public class MyClass
{
Method1()
{
// call Web service method
// code for polling
}
}
然而,这种方法使 Method1 阻塞,直到轮询期间确定的操作结果可用。我想更改它,以便 Method1 的调用者可以在调用 Web 服务方法后立即返回,并且可以在 Web 服务结果可用后以某种方式发出信号。所以我想有一个 AutoResetEvent 对象作为我在轮询期间设置为信号状态的类成员。
public class MyClass
{
public AutoResetEvent autoEvent = new AutoResetEvent(false);
Method1()
{
// call Web service method
}
Method2()
{
// code for polling
// change state of autoEvent to signaled once results are availble
}
}
使用这种方法,此 API 的用户只需调用立即返回的 Method1,他们就可以等待 autoEvent 得到信号。问题是在这种情况下谁会调用 Method2?