我正在开发一个JavaFX项目,我正在使用Task进行网络调用。不幸的是,我无法找到如何将参数传递给它。我搜索了许多链接,但没有提供。来自java2s的一个链接声称它们正在传递,但代码并未反映出这一点。
从下面的代码中可以看出,我正在使用for循环并在URL中传递RestGroupAccount的ID参数。这一次没关系,因为我总是需要所有的RestCanvas。
但我有兴趣知道如何为任务提供参数
代码:
use strict
如果需要更多信息,请告知我们。谢谢。
答案 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对象进行操作,并且实现我的异步任务现在或多或少与实现正常任务相同。