从工作线程调用时,JavaFX Node.snapshot()会冻结线程吗?

Tro*_*aci 1 java multithreading javafx-2

我需要写一个javafx.scene.canvas.Canvasjavafx.scene.image.WritableImage.我知道snapshot()方法javafx.scene.Node将执行此操作,并且当我在JavaFX应用程序线程上时,它工作得很好.

但我需要从使用该javafx.concurrent包的工作线程执行此写操作.所以我javafx.concurrent.Task<V>试图snapshot()从它的call()方法中调用该方法.尝试执行此操作时,线程在调用时会冻结snapshot().

所以我的问题是我是否允许snapshot()从工作线程中调用利用javafx.concurrent包的?

Ser*_*nev 5

尝试Platfrom#runLater()完全针对此类任务引入的内容:http: //docs.oracle.com/javafx/2/api/javafx/application/Platform.html#runLater(java.lang.Runnable)

Platform.runLater(new Runnable() {
    public void run() {
        myNode.snapshot(...)
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以从任何线程运行此代码,但snapshot()可以根据需要在FX App Thread上调用方法.