2017-12-11 11 views
0
runasync {} ui {} 

때때로 ui {} 블록이 트리거되고 때로는 실행되지 않습니다. 그것을 일으키는 원인. runasync {}의 태스크가 빠른 태스크 인 경우, ui {}가 작동하지 않는다는 것을 이해해야합니다. 도와주세요. 그것은 다소 실망 스럽습니다.Tornarofx runasync {} 문제

+0

실제로 이것은 runasync의 디자인 결함입니다. 작업 블록 내에서 println 또는 유사 작업을 수행하는 동안 우리가 만났던 하나의 결함입니다. 나는 실제 작업을하는 동안 아무도 물지 않는 것을 본 적이 없으며, 우리가 좋은 해결책을 찾지 못했기 때문에 그렇게했습니다. 당신이하고있는 일이 너무 빨리 실행되어 실패했다고 말할 수 있습니까? 대안은 JavaFX'Task'를 수동으로 생성하고 성공 콜백을 첨부하는 것입니다. 이 문제를 자세히 조사하고 영구적 인 해결책을 찾고 싶습니다. –

+0

확인해 주셔서 감사합니다. 사실이 문제는 프로그램을 불안정한 상태로 만듭니다. 그것은 예측할 수 없습니다. 컨트롤러에서 관측 가능 목록을 얻으려고했는데 정상적인 사용 사례라고 생각합니다. 그런 다음 itemsview = it 내부에서 tableview를 처리했습니다. ui 블록이 실행되지 않으면 테이블보기에 데이터가 표시되지 않습니다. – Adi

+0

블록에 fail {} 기능을 추가 할 수 있습니까? 이렇게하면 응용 프로그램 예외를 배제 할 수 있습니다. runAsync {} 블록에서 예외가 발생하면 ui {}가 호출되지 않을 수 있습니다. runAsync {...} ui {...} fail {...} –

답변

1

실제로 이것은 ui 기능의 설계 상 결함이었습니다. 이 작업이 이미 완료 되었는 지 확인하지 않고 전달 된 함수를 s etOnSucceeded 콜백에 첨부했습니다. 이 문제는 tornadofx-1.7.14-SNAPSHOT으로 수정되었으며, 지금 oss.sonatype.org에서 사용할 수 있습니다. 스냅 샷 릴리즈를 사용하는 방법에 대한 정보는 README page을 참조하십시오.

+0

고마워요. 그것도 asynchItems을 수정합니까 ???? – Adi

+0

예,'asyncItems'는 chaining task -> success이기 때문에 그렇습니다. 버전 1.7.14 이후 –

+0

백업 된 관찰 가능 목록에 새 항목 추가시 스틸 테이블보기가 업데이트되지 않습니다. 어디로 작동 : val task = task {controller.getServices()} task.setOnSucceeded {items = task.value} – Adi