我用 BeginInvoke 反复调用一个方法。每次通话后,我都会调用 EndInvoke。
问题在于,对于第二次调用,返回的 IAsyncResult 中的 IsCompleted 成员在 BeginInvoke 调用之后立即设置为 true。
这会导致故障,因为程序会认为第二次调用已完成。
为什么会这样做,我如何检测第二次通话何时真正完成?
Declarations:
IAsyncResult ar;
Mercury.J4000.Ui.frmMain.doPrintsDelegate printCallback;
The BeginInvoke call:
ar = printCallback.BeginInvoke (jobNameArray, copies, distances, null, null);
The EndInvoke call (in another method):
printCallback.EndInvoke(ar);