자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey 로딩화면 관련해서 질문드립니다.
2020.03.02 17:23
안녕하세요?
https://blog.hjf.pe.kr/481?category=478591
위 내용을 참고해서 쿼리시 로딩화면을 띄우려고 하는데
TWaitDialog.Show를 먼저 해도 로딩화면이 나타나지 않습니다.
Dialog.show가 되기전에 쿼리가 돌아서 그런거 같은데... 해결하지 못하고 있습니다.
방법이 있을까요?
아니면 wait화면을 만들때 참조해서 볼만한게 있을까요?
Firemonkey 로딩화면 관련해서 질문드립니다.
2020.03.02 17:23
안녕하세요?
https://blog.hjf.pe.kr/481?category=478591
위 내용을 참고해서 쿼리시 로딩화면을 띄우려고 하는데
TWaitDialog.Show를 먼저 해도 로딩화면이 나타나지 않습니다.
Dialog.show가 되기전에 쿼리가 돌아서 그런거 같은데... 해결하지 못하고 있습니다.
방법이 있을까요?
아니면 wait화면을 만들때 참조해서 볼만한게 있을까요?
해당 링크(WaitDialog 구현 - 재사용 가능한 프레임 구현하기)의 기능은 단순하게 로딩화면을 표시하는 것입니다.
시간이 오래걸리는 쿼리를 실행 중 로딩화면을 표시하고 싶어하는 것으로 보입니다.
즉, 쿼리를 실행하고, 로딩화면을 표시하는 일을 동시에 하고자하는 것입니다.
쿼리 실행과 로딩화면 표시를 동시에 하려면 두가지 작업이 동시에 진행되어야 하고, 위 상황에서는 쿼리 실행을 비동기로 진행하는 것이 맞을 것 같습니다.
아시겠지만 애플리케이션에는 UI 쓰래드가 실행되어 UI 처리를 합니다. 로딩화면은 UI 쓰래드에서 처리하고, 쿼리 실행은 별도의 쓰래드에서 처리하도록 구현해보시기 바랍니다.
TFDQuery를 사용한다면 ResourceOptions.CmdExecMode를 amAsync로 설정해 진행해보시기 바랍니다. 자세한 내용은 아래 링크들을 참고하시기 바랍니다.
http://docwiki.embarcadero.com/Libraries/Rio/en/FireDAC.Stan.Option.TFDResourceOptions.CmdExecMode
http://docwiki.embarcadero.com/CodeExamples/Rio/en/FireDAC.TFDQuery.Async_Sample
https://github.com/Embarcadero/RADStudio10.3.3Demos/blob/master/Object%20Pascal/Database/FireDAC/Samples/Comp%20Layer/TFDQuery/ExecSQL/Async/fAsync.pas
그외의 기술을 사용한다면 해당 기술의 비동기 호출을 사용하거나, 익명쓰래드 등을 활용하시기 바랍니다.
http://docwiki.embarcadero.com/Libraries/Rio/en/System.Classes.TThread.CreateAnonymousThread
https://m.blog.naver.com/PostView.nhn?blogId=jsf3rd&logNo=185101304&proxyReferer=https%3A%2F%2Fwww.google.com%2F
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)