1
,我想確保,當有人在信號取消標記源CTS,則win.Close()方法應在_uiContext被稱爲上下文(前面捕獲的GUI上下文)。CancellationToken.Register考慮下面的代碼片段執行上下文
這是保證正確的方法嗎?
CancellationTokenRegistration ctReg;
var tcs = new TaskCompletionSource<bool>();
var promise = Task.Factory.StartNew(async() =>
{
var win = new UserView(tcs); // passed in
win.DataContext = someViewModel;
ctReg= cts.Token.Register(() =>
{
win.Close(); // this should run in _uiContext
}, true);
win.Show();
return await tcs.Task.ConfigureAwait(false);
}, cts.Token, TaskCreationOptions.LongRunning, _uiContext).Unwrap();
什麼是_uiContext? – i3arnon
它是先前保存捕獲的UI上下文的變量(TaskScheduler.FromSynchronizationContext()) – alpinescrambler