【发布时间】:2009-01-24 06:20:00
【问题描述】:
我有一个第三方库,其中包含一个异步执行功能的类。该类继承自Form。该函数基本上基于存储在数据库中的数据执行计算。完成后,它会在调用表单中调用 _Complete 事件。
我想做的是同步调用该函数,但从非 Windows 窗体应用程序。问题是,无论我做什么,我的应用程序都会阻塞并且 _Complete 事件处理程序永远不会触发。在 Windows 窗体中,我可以使用“完成”标志和“while (!complete) application.doevents”模拟同步运行的功能,但显然 application.doevents 在非 Windows 窗体应用程序中不可用。
有什么东西会阻止我在 Windows 窗体应用程序之外使用该类的方法(因为它继承自“Form”)? 有什么办法可以解决这个问题吗?
谢谢, 迈克
【问题讨论】:
-
我不清楚。您的代码在非 Windows 应用程序中异步运行时是否正常运行?还是它总是在非 Windows 应用程序中无限期阻塞?
-
在非 Windows 应用程序中,它会无限期阻塞,因为 _Complete 事件不会触发,尽管尝试了 ManualResetEvents 等。在 Windows 窗体应用程序中,它工作正常。
标签: c# asynchronous wrapper synchronous