我想在C++ Builder XE中構建DataSnap服務器作爲Windows窗體應用程序。我使用TIdSchedulerOfThreadPool,如http://blog.marcocantu.com/blog/datasnap_deployment_performance.html所述。在有負載下,我得到了大量的EIdConnClosedGracefully異常,這可能是正常的,但問題是我從線程中得到這些異常作爲MessageBoxes。我尋找一些事件,我可以壓制這個消息框。如何從DataSnap中的線程中抑制異常消息框EIdConnClosedGracefully
1
A
回答
0
您是否看到消息框僅在調試器中運行應用程序時出現,或者您在IDE外部運行應用程序時是否看到它們?在調試器內部是正常行爲,因爲它們是最後的例外。除非您告訴它忽略它們,否則調試器會針對引發的異常顯示彈出消息。但在IDE之外,從工作線程看消息框的唯一方法是,如果您自己的代碼捕獲異常並自己顯示消息框,或者DataSnap在內部顯示它們。 EIdConnClosedGracefully是一個Indy異常,並且DataSnap在內部使用Indy,但DataSnap很可能不會顯示它自己的消息框。 Indy當然不會顯示一個消息框。
0
我也看到了IDE以外的消息框。它來自TWebRequestHandler(DataSnap)。這裏是線程的堆棧跟蹤顯示該消息框:
:7c90e514 ntdll.KiFastSystemCallRet
:7e369418 user32.WaitMessage + 0xc
:7e3749c4 ; C:\WINDOWS\system32\user32.dll
:7e38a956 ; C:\WINDOWS\system32\user32.dll
:7e38a2bc ; C:\WINDOWS\system32\user32.dll
:7e3b63fd user32.MessageBoxTimeoutW + 0x7a
:7e3a0853 user32.MessageBoxExW + 0x1b
:7e3b6579 user32.MessageBoxW + 0x45
:004D6BBD Sysutils::ShowException(ExceptObject=????, ExceptAddr=????)
:0082b248 ; Webreq::TWebRequestHandler::HandleException
:0082b06f ; Webreq::TWebRequestHandler::HandleRequest
:0043dbdf ; Idhttpwebbrokerbridge::_16464
:0043dd23 Idhttpwebbrokerbridge::TIdHTTPWebBrokerBridge::DoCommandGet + 0x23
:0068AB4D Idcustomhttpserver::TIdCustomHTTPServer::DoExecute(Self=:00E9B9D0, AContext=:00F13660)
:0063F09A Idcontext::TIdContext::Run(Self=????)
:0049F9CD Classes::ThreadProc(Thread=:00ECA260)
:004EF72E System::ThreadWrapper(Parameter=:00F1EF10)
:7c80b729 ; C:\WINDOWS\system32\kernel32.dll
+0
然後,它是'TWebRequestHandler :: HandleException()'中的一個錯誤,因爲它不應該在工作線程內調用'ShowException()'。請[提交錯誤報告](http://qc.embarcadero.com)到Embarcadero。 –
相關問題
- 1. 如何從異常中獲取消息?
- 2. 疑難解答EIdConnClosedGracefully異常?
- 3. FxCop:異步方法的抑制消息
- 4. infragistics試用版的抑制消息框
- 5. Calibur.Micro中的異常/消息框
- 6. 如何從AWS DynamoDB python異常中提取異常消息?
- 7. Java線程異常終止,並帶有消息null的異常。
- 8. 抑制Office365中的異常powershell
- 9. 抑制瀏覽器中的異常
- 10. Servlet中的異常消息
- 11. JCodemodel中的異常消息
- 12. 如何抑制FeedParser INFO消息
- 13. 錯誤消息:線程「main」中的異常java.lang.ArrayIndexOutOfBoundsException:-1
- 14. 如何抑制EAccessViolation終止異常(mshtml.dll)
- 15. 在python MySQLdb中抑制cursor.execute()消息
- 16. 抑制R中的一些消息但留下其他消息?
- 17. 厄蘭進程消息抑制
- 18. 從輸出中刪除異常消息
- 19. 抑制PowerShell輸出消息
- 20. 抑制RestKit錯誤消息
- 21. 抑制gfortran警告消息
- 22. 抑制slf4j調試消息
- 23. 抑制「Bad system call」消息
- 24. 異常消息(Python 2.6中)
- 25. javascript:如何使用抑制回調中的異常的庫?
- 26. 如何暫時抑制SSMS中的錯誤消息?
- 27. 如何抑制rpy2中的錯誤消息
- 28. 如何創建消息框線程?
- 29. WPF將異常消息從ThreadPool線程傳遞到UI
- 30. 如何從捕獲的異常中打印消息?
見上面我的回答:) – user1976837
我添加bug報告http://qc.embarcadero.com/wc/qcmain.aspx?d=112154它在XE3中修復了http://qc.embarcadero.com/wc/qcmain.aspx?d=97194這是永無止境的故事。 XE3修復了一個問題並引入了新問題。 R.I.P DataSnap – user1976837