0

尽管我不认为这是 Vaadin 特定的问题。我真正需要做的就是重新加入未来在完成时创建的线程。

(ClickHandler) (event) -> {
    log().debug( "current Thread {}", Thread.currentThread().getId() );
    viewModel.generateFileDownload().thenAccept( this::download );
    // needs to continue to this immediately, note: there are similarly vaadin reasons why you can't just block here.
    button.setEnabled( false );
}


private void download( final File file ) {
   // do stuff that needs to happen in the original thread
  log().debug( "current Thread {}", Thread.currentThread().getId() );

   button.setEnabled( true );
}

我需要这些线程 ID 相同,显然我可以重做这个。我知道有一个加入,但现在确定当我在完成之前不想重新加入时这对我有什么帮助?

4

1 回答 1

0

对于您的具体问题,您应该简单地使用

Button button = new Button("Download");
button.setDisableOnClick(true); //after creating the button

button.setEnabled(true); //after using the button, in click handler

请注意,这是Button. 对于更高级的情况,您应该使用@PushVaadin 的功能。

于 2016-05-10T08:21:51.283 回答