JavaFX में एक और टास्क के साथ नियंत्रण टास्क

वोट
0

यहाँ मैं क्या करने की कोशिश कर रहा हूँ है: कार्य 1 रन और एक ही समय में कार्य 2 कार्यान्वित करता है, कार्य 2 एक तरीका है कि प्रत्येक 15 सेकंड और चलाता है (इस के लिए मैं टाइमर वर्ग का उपयोग करें), इस पद्धति बंद हो जाता है कार्य 1 परिष्करण शुरू करने के बाद किया गया है टास्क 1. समस्या यह है कि जब मैं कार्य 2 में कार्य 1 फोन और .isRunning निष्पादित करने के लिए () .Wait () निम्न त्रुटि दिखाई देता है की कोशिश या टास्क केवल FX आवेदन थ्रेड से इस्तेमाल किया जाना चाहिए है। मैं समझता हूँ कि अगर क्योंकि मैं कार्य 2 चलाने के लिए या क्योंकि मैं एक और टास्क withint संदर्भ नहीं कर सकते एक टास्क टाइमर वर्ग का उपयोग कर रहा त्रुटि दिखाई दे रहा है न। यहाँ कार्य 2 के लिए कोड है:

public void unfollowUsers(Timer t, Task<Void> likesTask, WebDriver driver) throws InterruptedException {
        if (!usersToUnfollow.isEmpty() && likesTask.isRunning()) {
            likesTask.wait();
            //some code
            likesTask.notify();
        } else if (!usersToUnfollow.isEmpty()) {
            //some code
        } else {
            t.cancel();
        }
    }

    public Task<Void> unfollowsTask(Task<Void> likesTask, WebDriver driver) throws InterruptedException {
        TextArea logbox = guiController.getLogBox();
        return new Task<Void>() {
            @Override
            public Void call() throws InterruptedException, FailingHttpStatusCodeException, IOException {
                Timer t = new Timer();
                t.schedule(new TimerTask() {
                    @Override
                    public void run() {
                        try {
                            unfollowUsers(t, likesTask, driver);
                        } catch (InterruptedException ex) {
                            System.out.println(ex);
                        }
                    }
                }, 0, 15000);
                return null;
            }
        };
    }

    public void startUnfollowsThread(Task<Void> likesTask, WebDriver driver) throws InterruptedException {
        TextArea logbox = guiController.getLogBox();
        Task<Void> unfollowsTask = unfollowsTask(likesTask, driver);

        unfollowsTask.setOnSucceeded((WorkerStateEvent t) -> {
            utils.addLogLine(logbox, [+] Unfollows terminados!);
            unfollowsTask.cancel();
        });

        new Thread(unfollowsTask).start();
    }
27/07/2017 को 21:01
उपयोगकर्ता
अन्य भाषाओं में...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more