JavaFX:为Task提供参数

时间:2016-03-02 14:06:00

标签: java javafx task

我正在开发一个JavaFX项目,我正在使用Task进行网络调用。不幸的是,我无法找到如何将参数传递给它。我搜索了许多链接,但没有提供。来自java2s的一个链接声称它们正在传递,但代码并未反映出这一点。

从下面的代码中可以看出,我正在使用for循环并在URL中传递RestGroupAccount的ID参数。这一次没关系,因为我总是需要所有的RestCanvas。

但我有兴趣知道如何为任务提供参数

代码:

use strict

如果需要更多信息,请告知我们。谢谢。

2 个答案:

答案 0 :(得分:4)

如果需要多次使用Task中的代码,则应考虑创建非匿名子类,并在每次需要时使用构造参数对其进行实例化。

在您的示例中,这可能是:

var bytes = await File.ReadAllBytes("my-file.whatever");

答案 1 :(得分:3)

我有类似的需求,我需要创建可以接收文件并在其上执行任务的任务。在我的情况下,我需要在多个地方对文件做不同的事情,所以我创建了以下类:

public abstract class FileOperationTask<V> extends Task<V> {
    protected File file;

    public FileOperationTask(File file) {
        this.file = file;
    }
}

这允许我在我的控制器中定义以下内容:

FileOperationTask<List<RaffleTicket>> task = new FileOperationTask<List<RaffleTicket>>(file){
    @Override
    protected List<RaffleTicket> call() throws Exception {
        this.file.toString();
        return null;
    }
};
new Thread(task).run();

正如您所看到的,我能够对File对象进行操作,并且实现我的异步任务现在或多或少与实现正常任务相同。