The method is not async so you can just call it directly. Such as:
private void OnDiscoveryFinished(){ isDiscovering = false;}
And for the ObservableCollection, you can use the CollectionChanged event:
protected override void OnInitialized(){ base.OnInitialized(); devices.CollectionChanged += (s, e) => { StateHasChanged(); };}