2015-06-16 16 views
8

Trình quản lý chia sẻ kết nối ứng dụng Delphi có 20 cổng trong phạm vi từ 2020-2039 để bắt đầu chuỗi giao tiếp của nó. Tôi muốn tìm hiểu điều gì xảy ra, khi ứng dụng 21 được bắt đầu trên cùng một máy tính. Nó chỉ ra rằng ứng dụng này chỉ treo không phản hồi cho đến khi nó bị giết và tôi đã không tìm thấy một cách để chấm dứt nó một cách duyên dáng.Delphi XE8 duyên dáng xử lý ETetheringException khi khởi động ứng dụng

Để tái tạo, chỉ cần thả TTetheringManager và TTetheringProfile trên biểu mẫu trống, kết nối hồ sơ với Trình quản lý, biên dịch, khởi động ứng dụng 20 lần ngoài IDE và cuối cùng bắt đầu phiên bản 21 trong IDE.

Đây là những gì tôi đã phát hiện ra cho đến nay:

Trong System.Tether.NetworkAdapter: thủ tục TTetheringNetworkManagerCommunicationThread.Execute; an ETetheringException.Create (SManagerNetworkCreation) được nâng lên khi TCP hoặc máy chủ truyền thông UDP không thể khởi động được. Càng xa càng tốt.

Ngoại lệ này hiển thị trong Trình gỡ lỗi. Khi tôi tiếp tục và bước qua mã sau, ứng dụng cuối cùng đã treo trong Hệ thống: chức năng AcquireExceptionObject và không bao giờ trả về.

Kể từ khi ứng dụng được nêu ra trong quá Application.Run, tôi đã cố gắng để bắt ngoại lệ qua:

try 
    Application.Run; 
except 
    ShowMessage('Something went terribly wrong!'); 
end; 

nhưng điều này đã không làm việc. Bất kỳ đề xuất làm thế nào tôi có thể bắt (hoặc ngăn chặn) ngoại lệ này?

+0

Bạn sẽ có thể để thêm một event handler cho 'kiện OnException' của ứng dụng và xử lý các ngoại lệ đó. –

+0

Cảm ơn đề xuất của bạn, nhưng điều này cũng không giúp được gì. Tôi đã thử thiết lập Application.OnException, nhưng xử lý sự kiện này không bao giờ được thực hiện. Ngoại lệ cũng có thể được kích hoạt bằng cách gán TetherManager cho TetherProfile trong thời gian chạy, như: 'procedure TForm1.FormShow (Tên người gửi: TObject); bắt đầu thử thử TetheringAppProfile1.Manager: = TetheringManager1; ngoại trừ ShowMessage ('Đã xảy ra lỗi ở đây:'); kết thúc; cuối cùng là ShowMessage ('Cuối cùng đã làm được'); kết thúc; kết thúc; ' –

+0

Con trai này trông xấu xí:/ Không ngoại trừ cuối cùng cũng không bao giờ đạt được và ứng dụng chỉ bị treo. –

Trả lời

Các vấn đề liên quan