Tro*_*aci 1 java multithreading javafx-2
我需要写一个javafx.scene.canvas.Canvas到javafx.scene.image.WritableImage.我知道snapshot()方法javafx.scene.Node将执行此操作,并且当我在JavaFX应用程序线程上时,它工作得很好.
但我需要从使用该javafx.concurrent包的工作线程执行此写操作.所以我javafx.concurrent.Task<V>试图snapshot()从它的call()方法中调用该方法.尝试执行此操作时,线程在调用时会冻结snapshot().
所以我的问题是我是否允许snapshot()从工作线程中调用利用javafx.concurrent包的?
尝试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上调用方法.