我正在
跨线程操作无效
...错误与下面的代码。我认为async / await会照顾这个,但显然不是。奇怪的是,当我评论public class SampleController {
private ObservableList<Model> tableData = FXCollections.observableArrayList();
@FXML
private TableView<RowModel> table ;
@FXML
private TableColumn<Model, String> firstCol ;
@FXML
private TableColumn<Model, String> secondCol ;
@FXML
public void initialize() {
table.setEditable(false);
firstCol.setCellValueFactory(cellData -> cellData.getValue().getName());
secondCol.setCellValueFactory(cellData -> cellData.getValue().getProgress());
table.setItems(tableData);
}
public void addModel(ChannelFuture sendFileFeture,Model model){
table.getItems().add(model);
System.out.println("row model= "+model.getName().get());// it works fine;
sendFileFeture.addListener(rowModel);
}
}
时,错误消失了。想法?
textBoxUser.Enabled = false
答案 0 :(得分:6)
您的问题可能是由于VSTO没有正确提供SynchronizationContext
;这是Office插件系统长期存在的问题。您可以通过检查事件处理程序开头的SynchronizationContext.Current
值来验证这一点;如果是null
,则问题是由于VSTO。
要解决此问题,您可以在任何async void
事件处理程序的开头执行此操作:
SynchronizationContext.SetSynchronizationContext(new WindowsFormsSynchronizationContext());