我有一个执行类方法的控制台应用程序(在不同的项目中)。此方法异步执行到 web 服务的 POST(这是一个 3 分钟的冗长操作),并有一个回调,返回受 POST 影响的记录数。与此同时,程序继续执行其他花费不到 3 分钟的事情,并且程序在回调返回之前退出。
在过去,我使用了如下所示的 ManualResetEvent 来防止完成,但在这种情况下,我的方法位于另一个类库中,我希望尽可能保持干净。
static ManualResetEvent resetEvent = new ManualResetEvent(false)
static void Main()
{
CallAsyncMethod();
// Do other things...
resetEvent.WaitOne(); // Blocks until "set"
}
void AsyncMethodCallback()
{
// Do processing on completion...
resetEvent.Set(); // Allow the program to exit
}
我将不胜感激提出一个干净的模式来实现这一点,而不会用执行标志污染被调用的类。