在我的 winforms 客户端应用程序中,我为我的 WCF 服务(开始...和结束...)生成了异步方法。
当应用程序启动时,它对服务器进行异步调用以获取和缓存稍后将在应用程序中使用的数据(例如国家列表)。
如果应用程序的主线程在异步调用有机会完成之前需要这些数据(例如填充组合框),我想阻塞主线程直到异步调用结束。我想避免对 WCF 服务器进行冗余调用。
我曾尝试使用 Monitor/Mutex,Monitor.Enter(countryLock)
然后BeginGetCountries
在主线程中以及Monitor.Exit(countryLock)
在调用该EndGetCountries
方法时调用。但是,我面临以下异常:
对象同步方法是从未同步的代码块中调用的。
我应该调用调用Monitor.Exit(...)
的同一个线程Monitor.Enter(...)
吗?如果是,我如何知道Monitor
对象的所有者并在其上下文中进行调用?