我想出于目的使用异步方法,但是这里的问题是,当我编写如下查询时,程序被读取到主块,并且没有进入过程部分。我也想读。
DEFINE VARIABLE hAsynCall AS HANDLE NO-UNDO.
ASSIGN cPgmTest = Test.p
RUN VALUE(cPgmTest) ON SERVER gshAstraAppserver ASYNCHRONOUS
SET hAsynCall (INPUT 'Csv') NO-ERROR.
IF ERROR-STATUS:ERROR THEN DO:
MESSAGE ERROR-STATUS:GET-MESSAGE(1).
END.
DO WHILE NOT hAsynCall :COMPLETE:
PROCESS EVENTS.
IF hAsynCall :COMPLETE THEN
MESSAGE "completed"
VIEW-AS ALERT-BOX INFORMATION.
ELSE /* Async result not ready, so do something else. */
MESSAGE "Not yet ..." VIEW-AS ALERT-BOX INFORMATION.
END.
/* Test.p*/
/* Definition*/
/*Main Block*/
DEFINE INPUT PARAMETER cData AS CHARACTER NO-UNDO.
PAUSE 5.
/*Procedure*/
/*Function*/
如上所示,该程序已读入主程序段,但如果我从主程序段中剪切查询并粘贴到过程程序段中,则不会输入该程序。
答案 0 :(得分:1)
您需要持久地运行AppServer过程 ,然后在其中运行异步调用。
类似的东西:
DEFINE VARIABLE hp AS HANDLE NO-UNDO.
RUN test.p PERSISTENT SET hp.
RUN whatever IN hp ASYNCRHONOUS SET hasync ( "csv" ).
FINALLY:
DELETE OBJECT hp.
END FINALLY.
请注意,此模式会导致另外两个AppServer调用,可以使用代理存根来防止这种情况。