Tôi đang cố gắng thiết lập dịch vụ nền sẽ thực hiện tải hàng loạt dữ liệu giao dịch từ tệp csv. Dịch vụ nền này sẽ được bắt đầu từ một hành động mục menu được ánh xạ tới một phương thức trong lớp điều khiển/người trình bày.JavaFX2: Tôi có thể tạm dừng nền Task/Service không?
Thường xuyên như vậy, một số dữ liệu sẽ xuất hiện trong tệp csv mà không có dữ liệu chủ nào có thể tìm thấy trong cơ sở dữ liệu, điều này thường khiến tải lên bị lỗi và không thành công.
Trong những trường hợp như vậy, tôi muốn có thể có dịch vụ nền tạm dừng quá trình xử lý và gọi hộp thoại từ lớp người trình bày để nhận thông tin nhập của người dùng. Đầu vào của người dùng sẽ được sử dụng để thêm hàng chính trong cơ sở dữ liệu, sau đó dịch vụ nền sẽ tiếp tục từ nơi nó đã dừng lại (không phải từ đầu tệp csv, nhưng từ hàng gây ra lỗi).
Điều này có thể đạt được trong JavaFX, có lẽ với API javafx.concurrent không? Tôi sẽ đi đâu để tới đó?
Tuyệt vời, có vẻ như nó sẽ thực hiện công việc. Cảm ơn. –
Cảm ơn bạn đã dành thời gian để cung cấp một giải pháp; một sửa đổi điều này không xuất hiện để giải quyết vấn đề của tôi. Tuy nhiên tôi thấy một hành vi tò mò nhất trong mã mẫu mà bạn đã cung cấp. Nếu tôi sửa đổi chuỗi đầu vào và đặt mã thông báo đầu tiên thành 'MISSING', chương trình sẽ bị treo; cửa sổ hộp thoại để nhập vào người dùng không bật lên. Nhưng, nếu tôi tiến hành gỡ lỗi nó (trong NetBeans 7.2), nó hoạt động tốt. Bất kỳ ý tưởng gì đang xảy ra ở đây? –
Đã xảy ra lỗi trong mã mẫu. Mẫu sử dụng 'container.getScene(). GetWindow()' trong một tác vụ (chính xác) ném một (chưa được báo cáo) 'NullPointerException' khi vùng chứa chưa được thêm vào một cảnh. Tôi đã thay đổi thứ tự logic trong mẫu để tác vụ không được bắt đầu cho đến khi vùng chứa được sử dụng đã được thêm vào cảnh (để tránh vấn đề này). [Cập nhật mã mẫu được liên kết] (https://gist.github.com/jewelsea/4989970). – jewelsea