Synchronous Wait for Avalonia Dialog
Ideally, showing Avalonia dialog would be called from async method:
var frm = new Window(owner);
await frm.ShowDialog(this);And 90% of time you’re good with that.
However, what if we don’t have async method handy? What if we really need to ShowDialog from non-async code?
Well, a bit more convoluted code can be used.
using var source = new CancellationTokenSource();
window.ShowDialog(owner).ContinueWith(t => source.Cancel(),
TaskScheduler.FromCurrentSynchronizationContext());
Dispatcher.UIThread.MainLoop(source.Token);A bit of handful and not really portable, but it does the job.